|
|
pl:dydaktyka:sitw:2016:xen:lab3 [2016/11/29 00:08] msl [Lekcja 4: Benchmark Professional] |
pl:dydaktyka:sitw:2016:xen:lab3 [2019/06/27 15:50] |
====== 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ę: | |
| |
<code bash> | |
cd /home/student/sitw && ./prepare_xen_lab3.sh && reboot | |
</code> | |
| |
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'': | |
* ż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 [[https://xenbits.xen.org/docs/4.4-testing/man/xl.cfg.5.html|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/network/hostname'' | |
* ''/etc/hosts'' | |
* ... i zrestartować usługi internetowe: | |
* dla leniwych: restart maszyny | |
* dla pracowitych: | |
<code bash> | |
invoke-rc.d hostname.sh start | |
invoke-rc.d networking force-reload | |
invoke-rc.d network-manager force-reload | |
</code> | |
| |
**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): | |
| |
* [cpu] jak szybko jesteśmy w stanie znaleźć liczby pierwsze: | |
<code bash> | |
sysbench --test=cpu --num-threads=<liczba procesorów> --cpu-max-prime=<duża liczba, np. 99999> run | |
</code> | |
* [cpu] jak szybko umiemy liczyć: | |
<code bash> | |
time $(i=0; while (( i < <duża liczba, np. 9999999> )); do (( i ++ )); done) | |
</code> | |
* [hdd] jak szybko potrafimy czytać prosto z partycji dysku: | |
<code bash> | |
cat /dev/<partycja roota> | pipebench -q > /dev/null | |
</code> | |
* [hdd] jak szybko potrafimy pisać do pliku: | |
<code bash> | |
dd bs=16k count=<tyle, żeby plik zajął około 700MB> oflag=direct if=/dev/zero of=test_data | |
</code> | |
* [hdd] jak szybko potrafimy czytać z pliku: | |
<code bash> | |
dd bs=16K count=<tyle samo, co wcześniej> iflag=direct if=test_data of=/dev/null | |
</code> | |
| |
**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. [[https://github.com/kdlucas/byte-unixbench|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'' | |
* uruchamiamy ''UnixBench'': | |
| |
<code bash> | |
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 | |
</code> | |
| |
| |
| |
| |
===== Lekcja 3: 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), o nazwie ''lab3-pvmlvm''. | |
| |
**Zadanie 12:** 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 [[https://wiki.xenproject.org/wiki/Xen_Project_Schedulers | 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: | |
| |
<code bash> | |
xl help sched-credit | |
</code> | |
| |
oraz [[https://wiki.xen.org/wiki/Credit_Scheduler|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. | |