Ograniczenia procesora Hyper-V

14

Niedawno kupiliśmy serwer, na którym działa Hyper-V 2008 R2 bez systemu operacyjnego. Serwer ma dwa czterordzeniowe procesory Intel Xeon z hyperthreading, więc jeśli dobrze rozumiem, daje nam to 16 rdzeni. W ramach Hyper-V stworzyliśmy maszynę wirtualną z systemem Windows Server 2008 R2 z 4 wirtualnymi procesorami. Ekran ustawień procesora mówi mi, że stanowi to 25% całkowitej mocy obliczeniowej systemu. Czy to oznacza, że ​​wirtualny system operacyjny nie może wykorzystać pozostałych 75%? Będziemy uruchamiać kilka innych maszyn wirtualnych, ale ta jest przeznaczona dla programu SQL Server i chcielibyśmy uzyskać jak najwięcej mocy.

Scott
źródło
5
Chcesz być wyjątkowo ostrożny przy przydzielaniu vCPU do komputera. Oznacza to, że maszyna wirtualna musi poczekać, aż będą dostępne 4 fizyczne procesory w tym samym czasie, zanim będzie mogła się uruchomić. Zobacz tutaj
Holocryptic
6
Jeśli chodzi o Hyperthreading, spójrz na ten doskonały podkład: arstechnica.com/old/content/2002/10/hyperthreading.ars
Hyppy
4
Holocryptic, twoje stwierdzenie było prawdziwe w przypadku starszych systemów VMWare, ale nigdy nie było tak w przypadku Hyper-V. Hyper-V nie „grupuje” wirtualnych procesorów.
Jake Oshins

Odpowiedzi:

15

VCPU można zmapować tylko na pojedynczy fizyczny procesor. Nie możesz wziąć 4 fizycznych procesorów i stworzyć pojedynczego vCPU, który jest 4x szybszy; po prostu nie tak to działa.

Funkcja Hyper-V ogranicza się do przypisywania 4 maszyn wirtualnych do maszyny wirtualnej (ostatnio sprawdziłem). Jeśli potrzebujesz znacznej mocy procesora, fizycznie, nie ma sensu dodawać narzutów związanych z wirtualizacją do czegoś , co intensywnie i równolegle wymaga CPU .

Ponadto, jak zauważa Holocryptic, jeśli przypiszesz 4 maszyny wirtualne do maszyny wirtualnej, ta maszyna wirtualna nie będzie mogła działać, dopóki Hyper-V nie pozyska 4 fizycznych rdzeni procesora. W zależności od konfiguracji może to być poważny problem (np. Jeśli masz 6-rdzeniową maszynę z grupą 4 maszyn wirtualnych vCPU, tylko jedna będzie działać jednocześnie, pozostałe dwa rdzenie zawsze pozostaną zasadniczo nieużywane). Według Jake'a Oshinsa nie było to prawdą w przypadku żadnej wersji Hyper-V. Twierdzi, że Hyper-V nie używa planowania gangów dla procesora; jak prawie każdy inny hiperwizor. W związku z tym, jeśli dostępny jest jeden fistyczny rdzeń procesora, Hyper-V może go użyć do uruchomienia wieloprocesorowej maszyny wirtualnej. (Wspomniano również, że Hyper-V może nie używać wszystkich fizycznych rdzeni dostępnych w tym czasie z powodu partycjonowania NUMA)

Uwaga dodatkowa: SQL niekoniecznie wykorzystuje wszystkie rdzenie, które możesz w niego rzucić. To naprawdę zależy od tego, do czego go używasz i od stopnia obciążenia równoległego.

Chris S.
źródło
Zgadzam się, ale narzuty na procesorach wirtualnych są prawie niczym i rzadko wchodzą w grę.
Nate
4
Chris, notatka Holocryptic jest po prostu błędna. Hyper-V nie czeka, aż do zwolnienia 4 wirtualnych procesorów, przed zaplanowaniem wirtualnego procesora z 4 maszyn wirtualnych VP. Hyper-V planuje procesor wirtualny, ilekroć ma wolny procesor fizyczny do uruchomienia, z kilkoma zastrzeżeniami. Na przykład szuka procesorów fizycznych w tym samym fizycznym węźle NUMA, co reszta maszyny wirtualnej.
Jake Oshins
3

Tak, co powiedział Chris. Jeśli potrzebujesz więcej niż 4 procesorów na maszynie wirtualnej Hyper-V, utwórz dwa serwery SQL w trybie wirtualnym i rozłóż bazy danych lub fizycznie. W zależności od licencji na serwer SQL możesz być w stanie dodać więcej serwerów SQL w trybie wirtualnym (na tym samym fizycznym hoście) bez ponoszenia dodatkowych kosztów licencyjnych, ale przeczytaj dokument oficjalny dotyczący licencjonowania wirtualnego SQL, aby uzyskać więcej informacji.

Zgadzam się również, że jeśli w SQL brakuje mocy procesora z 4 wirtualnymi procesorami, to masz poważne wykorzystanie aplikacji lub źle napisane polecenia SQL.

Bret Fisher
źródło
1
Re: „… lub polecenia SQL są źle napisane”. Jest to prawie gwarantowane, ilekroć w grę wchodzi kod dostarczony przez dostawcę.
Skyhawk
Rzeczywiście, większość ruchu w bazie danych to OLTP z naszego systemu ERP. Mamy również system przepływu pracy od tego samego dostawcy. Niestandardowe rzeczy napisane wewnętrznie to niewielki procent.
Scott
Nasza stara baza danych działa maksymalnie na 4 rdzeniach logicznych (dwa dwurdzeniowe procesory), więc spodziewamy się, że będziemy potrzebować więcej.
Scott
0

Około 4 rdzeń limit:

W sekcji pliku konfiguracyjnego maszyny wirtualnej:

[procesory] [count type = ”integer”] 16 [/ count]

Teraz masz 16-rdzeniowy procesor.

AKTUALIZACJA: Wydaje się potrzebny zrzut ekranu

wprowadź opis zdjęcia tutaj

Nime Cloud
źródło
0

postępuj zgodnie z tym przewodnikiem

http://surminski.eu/2012/04/17/hyper-v-how-to-add-more-than-4-cores-to-a-virtual-machine/

możesz znaleźć plik konfiguracyjny vm xml w katalogu „Virtual Machines” katalogu VHD maszyny wirtualnej, plik konfiguracyjny zostanie nazwany pod identyfikatorem maszyny wirtualnej. Pod linkiem znajduje się odniesienie.

odwołanie: plik konfiguracyjny xml VM

upewnij się, że edytujesz plik konfiguracyjny VM xml przy pomocy notatnika / notatnika ++ otwartego z uprawnieniami administratora

Shuliyey
źródło