Hyper Threading i maszyny wirtualne?

15

Już spojrzałem na ten wątek: Hyper-V i Hyper-Threading: Włączony czy wyłączony? , ale jedyną odpowiedzią jest specyficzna dla systemu Windows ....

Buduję serwer VM (używając Proxmox VE, jeśli to robi różnicę) i zastanawiałem się, w jaki sposób hiperwątkowość może wpływać na maszyny wirtualne ...

W szczególności, jeśli maksymalizuję liczbę maszyn wirtualnych, czy hiperwątkowość pomogłoby lub pogorszyłoby wydajność?

Ponadto największymi maszynami wirtualnymi będzie serwer terminali z ~ 30 klientami (4 rdzenie / 8 GB pamięci RAM) i serwer plików, jeśli to pomoże.

Aktualizacja: Serwer to Dell R410 z 1 TB RAID 10, 32 GB pamięci RAM i podwójnym procesorem Intel Xeon E5530 (nie jestem pewien co do dokładnego modelu, ale był to E55xx z 2+ Ghz)

Aktualizacja: większość maszyn wirtualnych będzie na KVM.

Soviero
źródło
Podaj specyfikację serwera, którego zamierzasz używać.
ewwhite
Również ciekawy. Dlaczego Promox VE kontra ESXi?
ewwhite
Prawdopodobnie z powodu limitu ESXI 16 GB pamięci RAM na wolnej licencji
Tacticus
3
Wybieram Proxmox zamiast ESXi, ponieważ Proxmox ma kilka dodatkowych funkcji, takich jak pełne zarządzanie z GUI sieci, klastrowanie, specyfikacje serwera nie są sztucznie ograniczone przez licencje i kilka innych, których nie pamiętam. Ponadto 2.0 będzie obejmować uwierzytelnianie AD, które jest dla nas bardzo przydatne, nie jestem pewien, czy ESXi to zrobi ...
Soviero
1
Czy spojrzałeś na oVirt?
dyasny

Odpowiedzi:

12

Ogólnie rzecz biorąc, zostawiam HyperThreading WŁĄCZONY dla serwerów hostów VM (VMWare ESXi, KVM, HyperV itp.). Dotyczy to procesorów Intel Nehalem i nowszych (serii 5500 i nowszych). Dostępne są dodatkowe wątki do planowania wielu maszyn wirtualnych.

Możesz także ponownie ocenić rozmiar swoich systemów-gości. Zazwyczaj najlepiej jest zacząć od alokacji procesora na maszynach wirtualnych. Ponieważ mówisz o serwerze terminali, właściwie przeniósłbym to na 2 wirtualne procesory zamiast 4 vCPU. Hiperwizorowi łatwiej jest zaplanować czas pracy procesora dla maszyn wirtualnych o mniejszej liczbie rdzeni . Pamięć RAM jest jednak nadal krytyczna, więc upewnij się, że jest dużo dostępnych.

Zobacz: http://omtconcepts.com/wp/?p=14

ewwhite
źródło
Jak dokładnie dwa wątki są szybsze niż cztery?
Soviero
3
Nie szybciej ... Łatwiejsze do zaplanowania. Zobacz moją edycję. Wspomniana maszyna będzie miała 8 rdzeni (16 z funkcją HyperThreading). Próba znalezienia zasobów do zaplanowania gościa 4-vCPU jest trudniejsza niż 2-vCPU. Będziesz miał więcej sporów (a tym samym niższą wydajność). Jeśli planujesz uruchomić innych wirtualnych gości na tym serwerze, warto użyć 1 i 2 gości vCPU.
ewwhite
3
Twoja uwaga na temat planowania dotyczy tylko hiperwizorów, które wykonują „planowanie grupowe”, gdy próbują uruchomić przybliżenie „wszystkich lub żadnych” procesorów wirtualnych jednocześnie. W przypadku hiperwizorów, które to robią, dodanie większej liczby procesorów wirtualnych utrudni planowanie maszyny wirtualnej. Rozumiem, że Kevin zaktualizował swoje pytanie, aby stwierdzić, że głównie chce korzystać z KVM. Ale chcę podkreślić, że Hyper-V nie planuje gangów. Opiera się na parawirtualizacji systemu-gościa, aby uniknąć konieczności planowania gangów.
Jake Oshins
Nie wiedziałem tego o Hyper-V, ale dotyczy to innych głównych hiperwizorów.
ewwhite
1
KVM nie planuje gangów. W rzeczywistości robi to tylko VMWare, a nawet dodali pewne mechanizmy, aby
złagodzić
4

To naprawdę zależy. Jeśli, tak jak mówisz, zamierzasz „maksymalnie wykorzystać”, co, jak sądzę, oznacza całkowity procesor (przypisz więcej rdzeni procesora wirtualnego niż masz dostępnych, lub dokładnie tyle, ile masz dostępnych), wtedy HT powinien zdecydowanie być na.

Jeśli nie przeprowadzasz ogólnej alokacji, zwykle lepiej jest testować pod określonymi obciążeniami - czasami HT może w rzeczywistości zaszkodzić wydajności.

dyasny
źródło
Planuję przydzielić dokładnie tyle rdzeni / wątków, ile jest dostępnych, ale nie planuję nadmiernej alokacji.
Soviero
Czy uważasz, że system operacyjny hosta wcale nie potrzebuje czasu procesora? A jeśli przydzielisz tyle rdzeni v, ile masz wątków z włączoną HT, faktycznie generujesz alokację o co najmniej 70-80%, ponieważ nawet jeśli HT zwiększa wydajność, zwykle jest to 20-30% szczytów, a nie 100%, jak można założyć na podstawie liczby wątków.
dyasny
Ok, więc przydzielono nie więcej niż 12 „rdzeni” (75% z 16)?
Soviero
1
Chyba nie byłem wystarczająco jasny. Możesz ogólnie przydzielić, aw zależności od obciążeń maszyn wirtualnych procesor może wcale nie stać się wąskim gardłem. Co więcej, nigdy nie należy przypisywać więcej procesorów do maszyny wirtualnej, niż jest to absolutnie potrzebne, ponieważ im więcej procesorów ma maszyna wirtualna, tym trudniej jest zaplanować, więc wiele procesorów v-cpus może faktycznie obniżyć wydajność. Jeśli chodzi o 20% wzrost wydajności przez hyperthreading - nie jest to absolutne, liczba może być nieco wyższa, niższa, zero lub nawet ujemna - w zależności od obciążeń VM.
dyasny
No dobrze Dziękuję Ci.
Soviero
3

Istnieje wiele zmiennych, które wpływają na wydajność maszyny wirtualnej. HT jest tylko jedną ze zmiennych, ale zależy również od konfiguracji maszyny wirtualnej.

Jedna ze zmiennych wpływających na HT zależy od typu używanego Hypervisora.

Jeśli używasz lekkich maszyn wirtualnych, takich jak VZ, VServer itp., To jest całkiem oczywiste, że HT przyniesie odpowiednie korzyści, ponieważ te maszyny wirtualne nie są ściśle izolowane i są bardziej podobne do uruchamiania oprogramowania wielowątkowego.

Jeśli używasz ciężkich maszyn wirtualnych, takich jak KVM, Xen HVM itp., Możliwe jest, że HT będzie zakłócać rzeczy, np. Kiedy VM otrzyma dwa procesory, ale ostatecznie użyje jednego HT na różnych rdzeniach.

Najlepszym rozwiązaniem jest przetestowanie konfiguracji, aby sprawdzić, co Ci odpowiada.

sybreon
źródło