W ślad za ostatnimi testami wydajności XenServera, zgodnie z zapowiedzią podobny zestaw testów przeprowadziłem na maszynach wirtualnych pracujących pod kontrolą Hyper-V... Gwoli ścisłości - sprzęt fizyczny pozostał ten sam, konfiguracja maszyn wirtualnych przy analogicznych testach taka sama, metodologia testów taka sama, zmienił się tylko hypervisor - Hyper-V 1.0 zamiast XenServera 5.0.
Jedyne, czego nie byłem w stanie przetestować pod Hyper-V to wydajność maszyny wirtualnej z 8 procesorami, Hyper-V nie oferuje bowiem takiej możliwości - pozwala przypisać maszynie wirtualnej maksymalnie cztery procesory. Ogranicza to o połowę maksymalną moc obliczeniową udostępnianą przez Hyper-V maszynie wirtualnej. Podobnie wygląda to w przypadku ESXa - jedynie XenServer pozwala obecnie zwirtualizować osiem proceosorów. Mimo to, nadal można jednak porównać, jak na tle XenServera wypadają testy wydajności maszyn Hyper-V z czterema procesorami oraz jak wypadają testy równoległych obciążeń wielu maszyn przy overcommitmencie procesorów.
Wyniki testów w tabelce, wnioski poniżej, a dla tych, którzy nie lubią czytać, na samym dole podsumowanie eksperymentu...
Komentarz? Nasuwa się tu kilka obserwacji - po pierwsze, wydajność jednostki obliczeniowej maszyny wirtualnej pracującej pod Hyper-V jest niemal identyczna, jak w przypadku XenServera. Różnice pojawiają się jednak w wydajności podsystemu pamięci i dysków - i to spore.
Test pamięci wypadł na maszynie wirtualnej Hyper-V o ponad 30% gorzej, niż na maszynie wirtualnej XenServera. Co interesujące, również o ok. 30% gorzej na tle Xena wypadł w przypadku Hyper-V test odczytu z dysku (dla porządku - użyłem dysków VHD typu fixed i muszę przyznać, że byłem zawiedziony wynikiem). Liczby mówią same za siebie - testy powtórzyłem kilkukrotnie za każdym razem osiągając bardzo zbliżone rezultaty.
Testy wykonane przy drugiej, obciążonej maszynie wirtualnej pokazały podobne zachowanie wydajności procesorów, wyraźnie widoczny stał się jednak spadek wydajności pamięci. Równoległe obciążenie o podobnym charakterze, które Xenowi nie robiło żadnej różnicy, w przypadku Hyper-V poskutkowało spadkiem wydajności podsystemu pamięci na maszynach wirtualnych o ok. 20%.
Należy zwrócić uwagę na to, że testy równoległego obciążenia maszyn Xena wykonane były przy overcommitmencie procesorów - łącznie maszyny wirtualne miały ich 16 (po 8 na każdą), podczas gdy fizycznie mój serwer testowy posiada jedynie 8 rdzeni. Uruchomienie drugiej maszyny wirtualnej na Hyper-V nie tworzyło sytuacji overcommitmentu - przy dwóch maszynach pracowało jedynie 8 wirtualnych procesorów.
Postanowiłem to zmienić uruchamiając dodatkowe dwie maszyny tak, żeby doprowadzić do podobnego jak przy testach Xena overcommitmentu na poziomie 2x, czyli łącznie 16 rdzeni. Musiałem niestety zmniejszyć przypisanie pamięci RAM każdej z maszyn ze względu na fizyczne ograniczenia. Test wypadł zaskakująco, ponieważ mimo odradzania przez Microsoft wirtualizowania większej liczby procesorów niż fizycznych rdzeni, narzut związany z overcommitmentem procesorów w przypadku Hyper-V okazał się równie nieznaczny, jak w przypadku Xen. Miła niespodzianka.
Niestety, że zwiększenie liczby obciążonych maszyn wirtualnych spowodowało w przypadku Hyper-V dalszy, dramatyczny spadek wydajności wirtualizacji dostępu do pamięci RAM, której przepustowość przy czterech obciążonych maszynach spadła do poziomu poniżej 1 GB/s. Zjawisko to w przypadku XenServera praktycznie nie występuje, widać natomiast wyraźnie że jest słabym punktem Hyper-V - do poprawki... może w R2 będzie lepiej.
Dla tych, którzy nie lubią czytać ;) podsumowanie całej tej prozy i wyniki starcia Hyper-V 1.0 vs XenServer 5.0 w pigułce:
- Wydajność i narzut wirtualizacji CPU są w przypadku Hyper-V i XenServera bardzo zbliżone
- Wydajność wirtualizacji CPU przy równoległym obciążeniu wielu maszyn wirtualnych - również podobne
- Narzut pojawiający się przy overcommitmencie CPU jest porównywalnie niewielki
- Przez ograniczenie do 4 CPU per maszyna wirtualna, w przypadku Hyper-V maksymalna wydajność obliczeniowa pojedynczej maszyny wirtualnej jest połową tego, co można uzyskać przy pomocy XenServera wspierającego wirtualizację 8 CPU per VM
- Hyper-V radzi sobie o ok. 30% gorzej niż XenServer z wirtualizacją dostępu do dysku i pamięci, przynajmniej kiedy dyski wirtualizowane są w plikach (nie testowałem pass-through)
- Równoległe obciążanie kolejnych maszyn wirtualnych skutkuje pod Hyper-V dramatycznym spadkiem wydajności wirtualizacji pamięci RAM, czego nie obserwuje się w przypadku XenServera
Kolejny krok to podobna bateria testów przeprowadzona na maszynach wirtualnych pracujących pod kontrolą VMware ESXi :-)