XEN: O dostępie do zasobów

Celem laboratorium jest zbadanie możliwości wpływania na wydajność gości przy użyciu mechanizmów udostępnianych przez hypervisor Xen.

Preliminaria

Proszę zalogować się na konto roota i wykonać następującą komendę:

cd /home/student/sitw && ./prepare_xen_lab3.sh && reboot

Po ponownym uruchomieniu komputera powinien włączyć się znajomy już Xen. Powinniśmy mieć dostępne dwie maszyny gości: lab2-pvm oraz lab2-pvhvm.

Zadanie 1: Proszę stworzyć (lab1), a potem zalogować się na obie maszyny (hasło xena) i sprawdzić działanie połączenia internetowego (polecenie ping). Podpowiedź: Na maszynę wirtualizowaną sprzętowo trzeba logować się przez protokół vnc, np.

vncviewer 127.0.0.1:<n-1> #dla n-tej maszyny

lub:

xl vnc <nazwa maszyny>

Może być konieczne zainstalowanie pakietu vncviewer ręcznie.

W przypadku maszyny parawirtualizowanej, wystarczy zajrzeć do lab 1. Jeżeli gość parawirtualizowany nie chce się uruchomić, narzekając na nieistniejący kernel, to znak, że kernel nie istnieje. Proszę sprawdzić jaką wersję kernela ma host (uname) i zmienić odpowiednią linię w pliku konfiguracyjnym maszyny (/etc/xen/lab-pvm.cfg).

Pytanie: dlaczego trzeba było to zrobić?

Przypomnienie: hasło root'a to xena.

Sekcja opcjonalna: SSH

Jeżeli dostęp po VNC jest zbyt niewygodny (niemożność kopiowania, etc.), to proszę skonfigurować na gościu ssh.

  • na gościu:
# instalujemy ssh
apt-get update
apt-get install ssh
# uruchamiamy ssh
systemctl start ssh
systemctl enable ssh
# podglądamy adres ip maszyny
ip addr show 
# sprawdzamy, czy istnieje w systemie użytkownik lab2
grep lab2 /etc/passwd
# jeśli nie, to go tworzymy
adduser lab2
# hasło też powinno brzmieć lab2
  • na gospodarzu:
# zapominamy o zaufanych adresach 
# na wypadek gdyby inna maszyna miała kiedyś ten sam adres
rm ~/.ssh/known_hosts 
# zastępujemy X odpowiednim numerkiem z adres
ssh lab2@10.0.0.X
# hasło: lab2
su
# hasło xena
# i już jesteśmy na koncie root

Lekcja 2: Sterowniki parawirtualne

Gość lab2-pvhvm, jak dobrze pamiętamy, jest gościem sprzętowym, czyli tzw. pełną wirtualizacją. Mamy jednak do czynienia tutaj z pewnym oszustwem — otóż gość ten zupełnie świadom tego, że jest uruchomiony w Xenie i używa specjalnych sterowników parawirtualnych. Skąd to wiemy? Standardowe (vanilla jądro linuksa od wersji 2.6.36 ma wbudowane sterowniki na takie okazje.

Zadanie 2: Proszę sprawdzić numer jądra gościa (man uname).

Ale nie musimy ufać zapewnieniom tego typu, możemy sami zobaczyć, jakie sterowniki zostały załadowane. Wystarczy zalogować się na gościa i sprawdzić, co powie polecenie dmesg. Powinno mówić coś o urządzeniach PCI zarządzanych przez XEN.

Zadanie 3: Proszę sprawdzić, czy lab2-pvhvm używa sterowników parawirtualnych. Polecane: man grep i ignorowanie wielkości znaków.

Zainstalujmy zatem trzeciego gościa, który z takich sterowników nie korzysta. Aby przyśpieszyć pracę, proszę skopiować konfigurację maszyny lab2-pvhvm.cfg do pliku lab3-hvm.cfg i dokonać trzech zmian:

  • zmienić nazwę maszyny na lab3-hvm
  • zmienić adres ip na 10.0.0.4:
    • żeby zmienić adres ip na zainstalowanym systemie należy dodatkowo:
      • zedytować na gościu plik: /etc/network/interfaces
      • uruchomić komendę: /etc/init.d/networking restart
  • zmienić ścieżki dysków twardych
  • wyłączamy urządzenia PCI zarządzane przez Xen. Znowu zerkamy do dokumentacji.

Po skopiowaniu dysków twardych z poprzedniej maszyny do odpowiednich ścieżek, maszyna powinna się elegancko uruchomić. Teraz na uruchomionej maszynie zmieniamy jeszcze kilka szczegółów:

  • zmieniamy nazwę hosta:
    • zastępujemy starą nazwę na nową (lab3-hvm) w plikach:
      • /etc/hostname
      • /etc/hosts
    • … i zrestartować usługi internetowe:
      • dla leniwych: restart maszyny
      • dla pracowitych:
invoke-rc.d hostname.sh start
invoke-rc.d networking force-reload
invoke-rc.d network-manager force-reload

Zadanie 4: Proszę sprawdzić, czy nowy gość używa sterowników PV.

Lekcja 3: Benchmark DIY

Mając trzech gości, sprawdźmy, który z nich najlepiej sobie radzi w prostych benchmarkach. Przeprowadzimy kilka prostych testów (w razie potrzeby proszę instalować brakujące narzędzia używając apt-get, wcześniejsze apt-get update może okazać się konieczne):

  • [cpu] jak szybko jesteśmy w stanie znaleźć liczby pierwsze:
sysbench --test=cpu --num-threads=<liczba procesorów> --cpu-max-prime=<duża liczba, np. 9999> run
  • [hdd] jak szybko potrafimy pisać do pliku:
dd bs=16k count=<tyle, żeby plik zajął około 1GB> oflag=direct if=/dev/zero of=test_data
  • [hdd] jak szybko potrafimy czytać z pliku:
dd bs=16K count=<tyle samo, co wcześniej> iflag=direct if=test_data of=/dev/null

Zadanie 5: Czy istnieje różnica w wydajności procesora między lab2-pvm i lab3-hvm? Proszę spróbować uruchomić testy pojedynczo oraz naraz na obu maszynach.

Zadanie 6: Czy istnieje różnica w wydajności dysku twardego między lab2-pvhvm i lab3-hvm? Proszę spróbować uruchomić testy pojedynczo oraz naraz na obu maszynach.

Lekcja 4: Scheduler CPU

Xen jako nadzorca musi dbać o zapotrzebowania swoich gości, w szczególności o przydzielany im czas procesora — podobnie jak w systemie operacyjnym czas jest przydzielany procesom. Służy do tego narzędzie zwane schedulerem. W Xenie możliwe jest tworzenie pul procesorów (ang. cpu pool) i do każdej puli można przyporządkować inny scheduler. Krótkie opisy dostępnych schedulerów można znaleźć na wiki Xena.

Zadanie 7: Używając komendy xl proszę sprawdzić jaki scheduler jest aktualnie używany w systemie.

Proszę teraz przeanalizować wyjście komendy:

xl help sched-credit

oraz opis schedulera o nazwie credit z wiki Xen.

Na potrzeby kolejnych pytań, zakładamy, że nasze maszyny mają za zadanie wykonać dużą liczbę ciężkich obliczeniowo zadań, np. służą do rozwiązywania problemów optymalizacyjnych.

Zadanie 8: Czy domyślny timeslice jest w porządku?

Zadanie 9: Proszę ustawić rate limiting tak, żeby odpowiadało środowisku małej liczby maszyn o dużej liczbie obliczeń do wykonania.

Zadanie 10: Proszę teraz uruchomić testy CPU na wszystkich maszynach równocześnie i zapisać wyniki.

Zadanie 11: Proszę ustawić wagi schedulera tak, żeby maszyna lab2-pvhvm była „dwa razy” ważniejsza od innych.

Zadanie 12: Proszę ustawić ograniczenia tak, żeby żadna maszyna poza lab2-phvm nie mogła używać naraz więcej niż 1,5 rdzenia.

Zadanie 13: Proszę teraz ponownie uruchomić testy CPU na wszystkich maszynach równocześnie. Czy wyniki testów się zmieniły?

Zadanie 14: Proszę zmienić scheduler na credit2 i ponownie przetestować działanie procesora. Podpowiedź: konfiguracja gruba i docs/misc/xen-command-line.html

Lekcja 5: Stronicowanie pamięci

Gość, jak każdy system operacyjny, stronicuje pamięć ram. Niestety, nie możemy dać mu bezpośredniego dostępu do ramu, ponieważ mógłby wtedy ingerować w życie innych maszyn. Trzeba zatem w jakiś sposób tłumaczyć tablice pamięci gościa na prawdziwe tablice — dla tego problemu istnieją dwa rozwiązana:

  • shadowing — tablica LUT zarządzana programowo przez Xen, tłumacząca bezpośrednio wirtualne strony pamięci na rzeczywiste. Dzięki prostocie bardzo szybko obsługuje chybienia, natomiast dużo energii trzeba włożyć w utrzymaniu mapy pamięci na rozsądnym poziomie
  • hap — hardware assisted paging, które korzysta z bardziej złożonych struktur, ale jest implementowane sprzętowo, dzięki czemu w bardzo szybki sposób obsługiwane są aktualizacje mapy pamięci. Problemem jest stosunkowo wolna obsługa chybień.

Zadanie 15: Proszę wyłączyć hap na jednej z maszyn (dokumentacja xl.cfg).

Żeby przetestować prędkość ramu, trzeba uciec się do sztuczki, mianowicie można stworzyć partycję, która znajduje się w ramie, np.

mkdir RAM_test
sudo mount tmpfs -t tmpfs RAM_test/ 
cd RAM_test

Następnie w katalogu RAM_test używamy testów wcześniej używanych do testowania dysku twardego.

Zadanie 15: Proszę przeprowadzić testy oparte o narzędzie dd. Czy jest widoczna różnica między shadowing a hap?

Lekcja 7: Benchmark Professional

Poprzednie benchmarki badały w dość prosty sposób dostęp do niektórych zasobów. Istnieją bardziej profesjonalne narzędzia służące do bardziej ogólnego testowanie systemu jako takiego, np. UnixBench. Narzędzie to bada wiele elementów systemu i zwraca nam na koniec jedną liczbę: System Benchmarks Index Score.

  • przed uruchomieniem UnixBench należy zainstalować kilka pakietów: libx11-dev libgl1-mesa-dev libxext-dev perl perl-modules make gcc
  • uruchamiamy UnixBench:
wget -O UnixBench.tar.gz http://ai.ia.agh.edu.pl/wiki/_media/pl:dydaktyka:sitw:2016:xen:unixbench.tar.gz
tar xf UnixBench.tar.gz
cd UnixBench
./Run

Zadanie 16: która maszyna ma najwyższy wynik SBIS?

Epilog: Sprzątanie

Proszę wyłączyć i usunąć wszystkich gości wraz z ich dyskami i plikami konifuracyjnymi. Następnie z konta roota:

cd /home/student && rm -rf /home/student/sitw && tar xf ./sitw.tar.gz && cd /home/student/sitw && ./clean_xen_lab3.sh

I na koniec proszę uruchomić komputer ponownie, tym razem bez Xena i zaktualizować konfigurację gruba:

update-grub
pl/dydaktyka/sitw/2016/xen/lab3.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0