To jest stara wersja strony!
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ę zalogować się na obie maszyny i sprawdzić działanie połączenia internetowego (polecenie ping
).
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 poprzedni gość używa sterownika PV. 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
:
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:
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 instalować brakujące narzędzia używając apt-get
— apt-get update
może okazać się konieczne):
sysbench --test=cpu --num-threads=<liczba procesorów> --cpu-max-prime=<duża liczba, np. 99999> run
time $(i=0; while (( i < <duża liczba, np. 9999999> )); do (( i ++ )); done)
cat /dev/<partycja roota> | pipebench -q > /dev/null
dd bs=16k count=<tyle, żeby plik zajął około 700MB> oflag=direct if=/dev/zero of=test_data
dd bs=16K count=<tyle samo, co wcześniej> iflag=direct if=test_data of=/dev/null
Zadanie 5: Czy istnieją różnice w wynikach między różnymi goścmi?
Lekcja 4: 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.
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 6: która maszyna ma najwyższy wynik SBIS?
Lekcja 6: Rodzaj dysku twardego
Proszę zainstalować 4 gościa, takiego samego jak lab2-pvm
, ale korzystającego z systemu plików lvm. (można po prostu użyć xen-create-image
jak na pierwszych laboratoriach).
nazwa: lab3-pvmlvm
RAM: 512MB
grupa lvm: sitw
dystrybucja jessie
ustawienia sieci:
adres ip: 10.0.0.5
gateway: 10.0.0.1
maska: 255.255.255.0
broadcast: 10.0.0.255
DNS (sprawdzić plik
/etc/resolv.conf
po instalacji):
8.8.4.4 8.8.8.8
Zadanie 7: Która obu maszyn parawirtualizowanych lepiej sobie radzi w kategorii dysk twardy?
Podpowiedź: W czasie instalacji maszyny można spokojnie przejść do Lekcji 4.
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 13: 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.
Zadanie 14: Zakładając, że mamy małą liczbę maszyn wirtualnych, wykonując ciężkie obliczenia. Czy domyślny timeslice jest w porządku?
Zadanie 15: Proszę ustawić rate limiting tak, żeby odpowiadało środowisku małej liczby maszyn o dużej liczbie obliczeń do wykonania.
Zadanie 16: Proszę ustawić wagi schedulera tak, żeby maszyna lab2-pvhvm
była „dwa razy” ważniejsza od innych.
Zadanie 17: Proszę ustawić ograniczenia tak, żeby żadna maszyna poza lab2-phvm
nie mogła używać naraz więcej niż 1,5 rdzenia.
Zadanie 18: Proszę teraz uruchomić testy CPU na kilku maszynach równocześnie. Czy wyniki testów się zmieniły?
Zadanie 19: Proszę zmienić scheduler na credit2
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 30: Proszę wyłączyć hap na jednej z maszyn (dokumentacja xl.cfg) i po raz pierwszy uruchomić testy RAMu z poprzedniego linka. Proszę uważać, żeby nie przedobrzyć i nie przekazać całego ramu na testy. Któa technologia lepiej sobie radzi w podanym teście.