Einschränkungen des Hyper-V-Prozessors

14

Wir haben kürzlich einen Server gekauft, auf dem Hyper-V 2008 R2 Bare Metal ausgeführt wird. Der Server verfügt über zwei Quad-Core Intel Xeon-Prozessoren mit Hyperthreading. Wenn ich das richtig verstehe, erhalten wir also 16 Kerne. In Hyper-V haben wir eine virtuelle Maschine erstellt, auf der Windows Server 2008 R2 mit vier virtuellen Prozessoren ausgeführt wird. Der Bildschirm mit den Prozessoreinstellungen gibt an, dass dies 25% der gesamten Systemverarbeitungsleistung darstellt. Bedeutet dies, dass die restlichen 75% nicht vom virtuellen Betriebssystem angezapft werden können? Wir werden ein paar andere virtuelle Maschinen betreiben, aber diese ist für SQL Server und wir möchten so viel Leistung wie möglich aufbringen.

Scott
quelle
5
Sie möchten beim Zuweisen von vCPUs zu einer Maschine äußerst vorsichtig sein. Es bedeutet , dass die virtuelle Maschine warten muss , bis es 4 physische Prozessoren stehen zur Verfügung zur gleichen Zeit , bevor sie ausgeführt werden können. Siehe hier
Holocryptic
6
Was Hyperthreading angeht, schauen Sie sich diese exzellente Grundierung an: arstechnica.com/old/content/2002/10/hyperthreading.ars
Hyppy,
4
Holocryptic, Ihre Aussage galt für ältere VMWare-Systeme, für Hyper-V jedoch noch nie. Hyper-V "terminiert" die virtuellen Prozessoren nicht.
Jake Oshins

Antworten:

15

Eine vCPU kann nur einer einzelnen physischen CPU zugeordnet werden. Sie können nicht 4 physische CPUs verwenden und eine einzelne vCPU erstellen, die 4x schneller ist. Es ist einfach nicht so, wie es funktioniert.

Hyper-V ist darauf beschränkt, einer VM 4 vCPUs zuzuweisen (zuletzt überprüft). Wenn Sie erhebliche CPU-Leistung benötigen, sollten Sie physisch vorgehen. Es macht keinen Sinn, den Virtualisierungsaufwand zu etwas hinzuzufügen, das in erster Linie CPU-intensiv und parallel ist.

Wie Holocryptic feststellt, kann diese VM, wenn Sie einer VM 4 vCPUs zuweisen, erst ausgeführt werden, wenn Hyper-V 4 physische CPU-Kerne für die Ausführung erworben hat. Abhängig von Ihrer Konfiguration kann dies ein schwerwiegender Stolperstein sein (z. B. wenn Sie einen 6-Core-Computer mit 4 vCPU-VMs haben, wird immer nur einer ausgeführt, die anderen beiden Kerne bleiben im Wesentlichen ungenutzt). Laut Jake Oshins galt dies für keine Version von Hyper-V. Er gibt an, dass Hyper-V keine Gruppenplanung für die CPU verwendet. wie fast jeder andere Hypervisor. Wenn also ein phystischer CPU-Kern verfügbar ist, kann Hyper-V ihn zum Ausführen einer Multi-CPU-VM verwenden. (Außerdem wird erwähnt, dass Hyper-V aufgrund der NUMA-Partitionierung möglicherweise nicht alle zur Zeit verfügbaren physischen Kerne verwendet.)

Randnotiz: SQL verwendet nicht unbedingt alle Kerne, die Sie überhaupt darauf werfen können. Es hängt wirklich davon ab, wofür Sie es verwenden und wie parallelisierbar die Last ist.

Chris S
quelle
Ich stimme zu, aber der Overhead auf virtuellen CPUs ist fast nichts und kommt selten ins Spiel.
Nate
4
Chris, Holocryptics Notiz ist einfach falsch. Hyper-V wartet nicht, bis 4 virtuelle CPUs frei sind, bevor ein virtueller Prozessor von einer 4-VP-VM geplant wird. Hyper-V plant einen virtuellen Prozessor immer dann, wenn ein physischer Prozessor frei ist, auf dem er ausgeführt werden kann, mit ein paar Einschränkungen. Beispielsweise sucht es nach physischen Prozessoren innerhalb desselben physischen NUMA-Knotens wie der Rest der VM.
Jake Oshins
3

Ja, was Chris gesagt hat. Wenn Sie mehr als 4 CPUs in einer virtuellen Hyper-V-Maschine benötigen, erstellen Sie entweder zwei virtuelle SQL-Server und verteilen Sie Ihre Datenbanken oder wechseln Sie in den physischen Zustand. Abhängig von Ihrer SQL Server-Lizenz können Sie möglicherweise weitere SQL Server in virtual (auf demselben physischen Host) hinzufügen, ohne dass zusätzliche Lizenzkosten anfallen. Weitere Informationen finden Sie im Whitepaper zur virtuellen SQL-Lizenzierung.

Ich würde auch zustimmen, dass, wenn Sie SQL mit 4 virtuellen CPUs haben, die CPU-Leistung ausgeht, Sie entweder eine ernsthafte Anwendungsauslastung haben oder die SQL-Befehle schlecht geschrieben sind.

Bret Fisher
quelle
1
Betreff: "... oder die SQL-Befehle sind falsch geschrieben." Dies ist fast immer dann gewährleistet, wenn vom Hersteller bereitgestellter Code im Spiel ist.
Skyhawk
Tatsächlich besteht der größte Teil des Datenbankverkehrs aus OLTP-Inhalten aus unserem ERP-System. Wir haben auch ein Workflow-System vom selben Hersteller. Eigenentwicklungen machen einen kleinen Prozentsatz aus.
Scott
Unsere alte Datenbank ist auf 4 logischen Kernen (zwei Dual-Core-CPUs) ausgelastet. Wir gehen davon aus, dass wir mehr benötigen werden.
Scott
0

Über 4 CPU-Core-Limit:

In der Konfigurationsdatei von VM:

[Prozessoren] [Zähltyp = "Ganzzahl"] 16 [/ count]

Jetzt haben Sie 16 Kern-CPU.

UPDATE: Scheint Screenshot benötigt

Bildbeschreibung hier eingeben

Nime Cloud
quelle
0

Folgen Sie dieser Anleitung

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

Sie finden die vm xml-Konfigurationsdatei im Verzeichnis "Virtual Machines" des VHD-Verzeichnisses der VM. Die Konfigurationsdatei wird unter der ID der VM benannt. Unter dem Link finden Sie eine Referenz.

Referenz: VM-XML-Konfigurationsdatei

Stellen Sie sicher, dass Sie die VM-XML-Konfigurationsdatei mit Notepad / Notepad ++ bearbeiten, das unter Administratorrechten geöffnet ist

Shuliyey
quelle