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 (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>

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 
  • 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: 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).

  • nazwa: lab3-pvmlvm
  • RAM: 512MB
  • grupa lvm: sitw
  • dystrybucja jessie
  • dwa rdzenie procesora
  • ustawienia sieci:
    • adres ip: 10.0.0.5
    • gateway: 10.0.0.1
    • maska: 255.255.255.0
    • broadcast: 10.0.0.255
    • DNS: 8.8.8.8

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

Podpowiedź: W czasie instalacji maszyny można spokojnie przejść do Lekcji 5.

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 wiki Xena.

Zadanie 8: 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 9: 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 11: Proszę teraz uruchomić testy CPU na wszystkich maszynach równocześnie i zapisać wyniki.

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

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

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

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

Lekcja 6: 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 16: 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 16: 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 17: 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: 2017/07/17 08:08 (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