Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:sitw:2016:xen:lab3 [2016/11/29 08:22] msl |
pl:dydaktyka:sitw:2016:xen:lab3 [2019/06/27 15:50] (aktualna) |
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''. | 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''). | **Zadanie 1:** Proszę stworzyć ([[https://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:sitw:2016:xen:lab1#lekcja_7instalowanie_gosci|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. |
| <code bash> |
| vncviewer 127.0.0.1:<n-1> #dla n-tej maszyny |
| </code> |
| lub: |
| <code bash> |
| xl vnc <nazwa maszyny> |
| </code> |
| Może być konieczne zainstalowanie pakietu ''vncviewer'' ręcznie. |
| |
| W przypadku maszyny parawirtualizowanej, wystarczy zajrzeć do [[https://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:sitw:2016:xen:lab1#lekcja_8sterowanie_goscmi| |
| 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: |
| <code bash> |
| # 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 |
| </code> |
| * na gospodarzu: |
| <code bash> |
| # 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 |
| </code> |
| |
===== Lekcja 2: Sterowniki parawirtualne ====== | ===== Lekcja 2: Sterowniki parawirtualne ====== |
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. | 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. | **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: | 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: |
* uruchomić komendę: ''/etc/init.d/networking restart'' | * uruchomić komendę: ''/etc/init.d/networking restart'' |
* zmienić ścieżki dysków twardych | * 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]]. | * wyłączamy urządzenia PCI zarządzane przez Xen. Znowu zerkamy do [[https://xenbits.xen.org/docs/4.8-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: | 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: | * zmieniamy nazwę hosta: |
* zastępujemy starą nazwę na nową (''lab3-hvm'') w plikach: | * zastępujemy starą nazwę na nową (''lab3-hvm'') w plikach: |
* ''/etc/network/hostname'' | * ''/etc/hostname'' |
* ''/etc/hosts'' | * ''/etc/hosts'' |
* ... i zrestartować usługi internetowe: | * ... i zrestartować usługi internetowe: |
===== Lekcja 3: Benchmark DIY ===== | ===== 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): | 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: | * [cpu] jak szybko jesteśmy w stanie znaleźć liczby pierwsze: |
<code bash> | <code bash> |
sysbench --test=cpu --num-threads=<liczba procesorów> --cpu-max-prime=<duża liczba, np. 99999> run | sysbench --test=cpu --num-threads=<liczba procesorów> --cpu-max-prime=<duża liczba, np. 9999> 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> | </code> |
* [hdd] jak szybko potrafimy pisać do pliku: | * [hdd] jak szybko potrafimy pisać do pliku: |
<code bash> | <code bash> |
dd bs=16k count=<tyle, żeby plik zajął około 700MB> oflag=direct if=/dev/zero of=test_data | dd bs=16k count=<tyle, żeby plik zajął około 1GB> oflag=direct if=/dev/zero of=test_data |
</code> | </code> |
* [hdd] jak szybko potrafimy czytać z pliku: | * [hdd] jak szybko potrafimy czytać z pliku: |
</code> | </code> |
| |
**Zadanie 5:** Czy istnieją różnice w wynikach między różnymi goścmi? | **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: Rodzaj dysku twardego ===== | |
| |
Proszę zainstalować 4-tego 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). | ===== Lekcja 4: Scheduler CPU ===== |
| |
* 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 5: 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]]. | 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 8:** Używając komendy ''xl'' proszę sprawdzić jaki scheduler jest aktualnie używany w systemie. | **Zadanie 7:** Używając komendy ''xl'' proszę sprawdzić jaki scheduler jest aktualnie używany w systemie. |
| |
Proszę teraz przeanalizować wyjście komendy: | Proszę teraz przeanalizować wyjście komendy: |
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. | 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 9**: Czy domyślny //timeslice// jest w porządku? | **Zadanie 8**: Czy domyślny //timeslice// jest w porządku? |
| |
**Zadanie 10**: Proszę ustawić //rate limiting// tak, żeby odpowiadało środowisku małej liczby maszyn o dużej liczbie obliczeń do wykonania. | **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 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 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 uruchomić testy CPU na kilku maszynach równocześnie. Czy wyniki testów się zmieniły? | **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. | **Zadanie 14**: Proszę zmienić scheduler na ''credit2'' i ponownie przetestować działanie procesora. |
**Podpowiedź**: konfiguracja ''gruba'' i [[https://xenbits.xen.org/docs/4.4-testing/misc/xen-command-line.html|docs/misc/xen-command-line.html]] | **Podpowiedź**: konfiguracja ''gruba'' i [[https://xenbits.xen.org/docs/4.8-testing/misc/xen-command-line.html|docs/misc/xen-command-line.html]] |
| |
===== Lekcja 6: Stronicowanie pamięci ===== | ===== 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: | 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: |
* 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ń. | * 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). | **Zadanie 15**: Proszę wyłączyć hap na jednej z maszyn ([[https://xenbits.xen.org/docs/4.8-testing/man/xl.cfg.5.html|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. | Żeby przetestować prędkość ramu, trzeba uciec się do sztuczki, mianowicie można stworzyć partycję, która znajduje się w ramie, np. |
| |
<code bash> | <code bash> |
mkdir RAM_test | mkdir RAM_test |
Następnie w katalogu ''RAM_test'' używamy testów wcześniej używanych do testowania dysku twardego. | Następnie w katalogu ''RAM_test'' używamy testów wcześniej używanych do testowania dysku twardego. |
| |
**Zadanie 16**: Proszę przeprowadzić testy oparte o narzędzie ''dd''. Czy jest widoczna różnica między //shadowing// a //hap//? | **Zadanie 15**: Proszę przeprowadzić testy oparte o narzędzie ''dd''. Czy jest widoczna różnica między //shadowing// a //hap//? |
| |
===== Lekcja 7: Benchmark Professional ===== | ===== Lekcja 7: Benchmark Professional ===== |
| |
| |
**Zadanie 17**: która maszyna ma najwyższy wynik SBIS? | **Zadanie 16**: która maszyna ma najwyższy wynik SBIS? |
===== Epilog: Sprzątanie ===== | ===== Epilog: Sprzątanie ===== |
| |