Anzahl der logischen Prozessoren pro VM?

7

Ich habe einen Server (Quad Core), auf dem Windows Hyper-V Server 2008 R2 mit zwei virtuellen Windows Server 208 R2 Standard-Gastgastmaschinen ausgeführt wird.

Ich habe festgestellt, dass die Anzahl der Einstellungen für logische Prozessoren (unter der Einstellungsseite für Prozessoren ) für jede VM standardmäßig 1 ist, aber ich kann zwischen 1 und 4 "virtuelle Prozessoren" (oder "logische Prozessoren" entsprechend) auswählen.

Meine Fragen sind: a) Werden diese "virtuellen Prozessoren" / "logischen Prozessoren" direkt den Kernen meiner Intel Q6600 Quad-Core-CPU zugeordnet? b) Ist es in diesem Fall ratsam, die Nummer für beide Gast-VMs auf 2 zu setzen? Lässt das genügend CPU-Leistung für den Hyper-V-Host?

Neben der Rechenleistung frage ich mich auch, ob / wie ich eine bestimmte Menge RAM für den Hyper-V-Host reservieren kann.

Noldorin
quelle

Antworten:

4

Es ist ein Kompromiss. Angenommen, Sie haben vier physische Kerne und zwei VMs.

Wenn Sie zwei virtuelle Kerne in jeder VM zuordnen, wird so ziemlich jeder Gast sehen, was er erwartet. Es werden zwei Kerne angezeigt, von denen erwartet wird, dass sie die volle Kontrolle haben und die mehr oder weniger erhalten. (Angenommen, die Hostlast ist nicht hoch.) Sie verwechseln den Scheduler des Gasts nicht oft mit einem Fall, in dem er einem Kern eine Aufgabe zuweist und erwartet, dass die Aufgabe sofort erledigt wird. Stattdessen wird die Aufgabe nicht erledigt, da kein physischer Kern vorhanden ist verfügbar. Wenn jedoch ein Gast keine CPU mehr hat und der andere inaktiv ist, drehen zwei Kerne mit den Daumen.

Wenn Sie andererseits jedem Gast vier virtuelle Kerne geben, kann jeder Gast die gesamte verfügbare CPU-Leistung nutzen, wenn der andere Gast und der Host diese nicht benötigen. Wenn jedoch eine Last von einer anderen Quelle geladen wird, erhält der Scheduler des Gastes nicht das erwartete Verhalten und einige Aufgaben werden sofort gestartet, andere nicht so, wie es der Scheduler des Gasts nicht leicht erwarten und bewältigen kann.

Im Allgemeinen empfehle ich, so viele physische Kerne wie möglich in jede VM einzubauen, von denen jemals erwartet werden kann, dass sie viel CPU benötigen. Die Ausnahme wäre, wenn Sie VMs haben, die entscheidend von der Latenz abhängen. Ich würde auch die Anzahl der Kerne auf "kleineren" oder "weniger wichtigen" VMs reduzieren, die eine physische Box mit kritischeren VMs teilen.

Der Hypervisor weist physischen Kernen im Rahmen seiner Planungsrichtlinie logische Kerne zu. Es gibt keine feste Zuordnung, es sei denn, Sie erstellen speziell eine. (Was ich nur in dem speziellen Fall empfehle, in dem Sie einen Kern für eine latenzkritische VM reservieren möchten.)

David Schwartz
quelle
Danke für die Antwort und die Details, David. Ich nehme an, was mich auch ein wenig verwirrte, war die scheinbare Redundanz mit der Ressourcenzuweisung (Prozentsätze für CPU und RAM) im selben Konfigurationsfenster. Spielst du überhaupt damit herum? Wie auch immer, nach Ihrem Rat erwäge ich, meinem "öffentlichen" (HTTP / FTP) VM-Server 3 Kerne und meinem "privaten" (Datei / Druck) Server 2 Kerne
zuzuweisen
1

Nein, es gibt keine direkte Zuordnung des logischen Prozessors zum physischen Prozessor ... per se ... Grundsätzlich wird für jeden logischen Prozessor ein neuer Thread erstellt, dessen Affinität auf einen bestimmten physischen Kern festgelegt ist ... sodass jeder Thread 100 verbrauchen kann % der Ressourcen auf jedem Kern. Das Zuweisen von 2 Maschinen zu allen 4 Kernen (2x4 logische Kerne) kann eine gute Idee sein oder auch nicht. Wenn Ihre Anwendungen CPU-intensiv sind ... oder viele Threads auf beiden Computern erzeugen ... werden beide regelmäßig warten, bis der andere fertig ist ... Das Zuweisen dedizierter Kerne pro Instanz bedeutet, dass nur minimale Verzögerungsaufgaben auftreten die CPU.

Sie können dem Host nicht wirklich eine bestimmte Menge an RAM zuweisen, außer die Menge zu begrenzen, die die Gäste verbrauchen können. Sie können in anderen virtuellen Frameworks ... aber Hyper-V ist das neue Kind auf dem Block ohne alle Schnickschnack der Oldtimer.

TheCompWiz
quelle
Es gibt tatsächlich zwei Probleme mit dieser Antwort. Erstens sind die virtuellen Prozessoren nicht an einen bestimmten Kern gebunden (affinisiert). Sie können auf jedem Kern ausgeführt werden. Zweitens können Sie dem Verwaltungsbetriebssystem (Host) eine bestimmte Menge an RAM zuweisen. Dafür gibt es einen Registrierungsschlüssel namens "Root Reserve".
Jake Oshins
Ich denke, @TheCompWiz bedeutet "dynamisch" affinitisiert, wenn es so etwas gibt>? dh vorübergehend affinisiert, während Ressourcen benötigt werden. Nur eine Vermutung. Trotzdem danke für die Details.
Noldorin
@ Jake Oshins: Möchtest du mich bitte mit einer Beschreibung dieses Registrierungsschlüssels verknüpfen?
Noldorin
Die Links von Microsoft ändern sich ständig. Hier ist eine Suche, die heute die Antwort als erstes Ergebnis zurückgibt
Jake Oshins
@ JakeOshins du bist im wahrsten Sinne des Wortes richtig ... aber das Konzept war das, was ich auszudrücken versuchte. Das heißt, ein einzelner Kern verbraucht niemals mehr CPU, als eine einzelne physische CPU bereitstellen kann. Wenn mehr virtuelle Kerne als physische Kerne zugewiesen werden, teilen sich einige virtuelle Instanzen die CPU-Zeit. Danke für den Link zum Wurzelreservat ... das habe ich noch nie gesehen.
TheCompWiz