Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
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] (aktualna)
Linia 13: Linia 13:
 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 ======
Linia 23: Linia 71:
 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:
Linia 33: Linia 81:
       * 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:​
Linia 53: Linia 101:
 ===== 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:
Linia 76: Linia 116:
 </​code>​ </​code>​
  
-**Zadanie 5:** Czy istnieją ​różnice wynikach ​między ​różnymi goścmi?+**Zadanie 5:** Czy istnieje ​różnica wydajności procesora ​między ​''​lab2-pvm''​ i ''​lab3-hvm''​Proszę spróbować uruchomić testy pojedynczo oraz naraz na obu maszynach.
  
-===== Lekcja 4Benchmark Professional =====+**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.
  
-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 ===== ===== Lekcja 4: Scheduler CPU =====
Linia 107: Linia 127:
 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 ​13:** 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:
Linia 117: Linia 137:
 oraz [[https://​wiki.xen.org/​wiki/​Credit_Scheduler|opis schedulera o nazwie credit z wiki Xen]]. 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 obliczeniaCzy domyślny timeslice jest w porządku?+Na potrzeby kolejnych pytań, zakładamy, że nasze maszyny mają za zadanie wykonać dużą liczbę ciężkich obliczeniowo zadań, npsłużą do rozwiązywania problemów optymalizacyjnych.
  
-**Zadanie ​15**: Proszę ustawić rate limiting tak, żeby odpowiadało ​środowisku małej liczby maszyn o dużej liczbie obliczeń do wykonania. ​+**Zadanie ​8**: Czy domyślny //​timeslice//​ jest w porządku?
  
-**Zadanie ​16**: Proszę ustawić ​wagi schedulera ​tak, żeby maszyna ''​lab2-pvhvm''​ była "dwa razy" ważniejsza od innych.+**Zadanie ​9**: Proszę ustawić ​//rate limiting// ​tak, żeby odpowiadało środowisku małej liczby maszyn o dużej liczbie obliczeń do wykonania
  
-**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 ​10**: Proszę ​teraz uruchomić testy CPU na wszystkich maszynach równocześnie i zapisać wyniki.
  
-**Zadanie ​18**: Proszę ​teraz uruchomić testy CPU na kilku maszynach równocześnieCzy wyniki testów się zmieniły?+**Zadanie ​11**: Proszę ​ustawić wagi schedulera tak, żeby maszyna ''​lab2-pvhvm''​ była "dwa razy" ważniejsza od innych.
  
-**Zadanie ​19**: Proszę zmienić scheduler na ''​credit2''​ +**Zadanie ​12**: Proszę ustawić ograniczenia tak, żeby żadna maszyna poza ''​lab2-phvm''​ nie mogła używać naraz więcej niż 1,5 rdzenia. 
-**Podpowiedź**:​ konfiguracja ''​gruba''​ i ''​docs/​misc/​xen-command-line.html''​+ 
 +**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 [[https://​xenbits.xen.org/​docs/​4.8-testing/​misc/​xen-command-line.html|docs/​misc/​xen-command-line.html]]
  
 ===== Lekcja 5: Stronicowanie pamięci ===== ===== Lekcja 5: Stronicowanie pamięci =====
Linia 134: Linia 158:
 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:​
  
-    * 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 wożyć w utrzymaniu mapy pamięci na rozsądnym poziomie+    * 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ń.     * 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+**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. 
 + 
 +<code bash> 
 +mkdir RAM_test 
 +sudo mount tmpfs -t tmpfs RAM_test/  
 +cd RAM_test 
 +</​code>​ 
 + 
 +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// ​//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 takiegonp. [[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 gcc''​ 
 +  * 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>​ 
 +   
 +   
 +**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:  
 + 
 +<code bash> 
 +cd /​home/​student && rm -rf /​home/​student/​sitw && tar xf ./​sitw.tar.gz && cd /​home/​student/​sitw && ./​clean_xen_lab3.sh 
 +</​code>​ 
 +I na koniec proszę **uruchomić komputer ponownie**, tym razem bez Xena i zaktualizować konfigurację gruba: 
 +<code bash> 
 +update-grub 
 +</​code>​ 
 +  
pl/dydaktyka/sitw/2016/xen/lab3.1480374513.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (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