Jump to content

Hyper-V / Ressourcenzuteilung / CPU vs. vCPU


Blase
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Community,

 

ich habe mal ein paar Verständnis Fragen bezüglich der Ressourcenzuteilung unter Hyper-V. Genauer gesagt wie es sich mit der Zuteilung der physikalischen CPU (-Kerne) und deren Zuteilung verhält.

 

In einem Server 2012 unter Hyper-V kann ich einer virtuellen Maschine in den Eigenschaften nicht mehr "virtuelle Prozessoren" zuteilen, als ich tatsächlich vorhanden habe - dann meckert er. Bei einem i5 also max. 4 Kerne, bei einem i7 max. 8 Kerne - die "HT-Kerne" zählen doch hier mir rein, oder? Ist diese Zuweisung 1:1? Also steht der zugewiesene Kern "exklusiv" der virtuellen Maschine zur Verfügung? Ich habe gelesen/aufgeschnappt, dass man im Bereich der "relativen Gewichtung" den Wert von 100 meinetwegen auf 200 erhöhen kann, damit man auf einem Hostsystem mit mehreren virtuellen Maschinen eine davon dann "bevorzugen" kann, wenn die Einstellungen der Maschinen (= die Anzahl zugewiesener Kerne) ansonsten identisch sind. Das wäre ja ein Wiederspruch bezüglich der Frage, ob diese Zuweisung 1:1 ist, bzw. ob der Kern exklusiv zur Verfügung steht. Denn wenn der Kern ohnehin nur für die VM zur Verfügung stünde, dann brauche ich doch ohnehin keine Gewichtung :suspect:

Und dann kommt in diesem Zusammenhang noch die vCore Sache und es werden "offizielle" Verhältnisse von 1:8 genannt, aber in der Praxis lieber nicht mehr als 1:4 - jetzt bin ich vollends raus :confused:

 

Wäre jemand von euch so lieb und würde mir - gerne auch an kleinen Beispielen oder Links - einmal aus diesem Wust an "Halbwissen" ein paar verlässliche Informationen geben.

 

Und noch eine Frage in diesem Zusammenhang - wie viel "Ressourcen" lässt man dem Hostsystem? Reicht ein CPU Kern und 1 GB RAM oder sollte/muss es mehr sein? Kann man auch alle CPU Kerne den virtuellen Maschinen zuweisen?

 

MfG Blase

Link zu diesem Kommentar

Hallo,

 

nein, der Kern steht nicht dauerhaft exklusiv der VM zur Verfügung, immer nur für einen kurzen Zeitraum in dem die VM gerade diesen Kern benutzt.

Die Zuweisungsraten und Quoten sind einzig und alleine abhängig von den in den VMs betriebenen Workloads. Typischerweise ist CPU-Last das kleinste Problem auf aktuellen Hyper-V Hosts. Quoten von 1:6 sind typisch anzutreffen, bei VDI Workloads tlw. deutlich höher, bei DB Workloads tlw. deutlich niedriger. Ein Overcommitment ist also grundsätzlich üblich. Berücksichtige aber, dass eine VM nur dann CPU Cyclen nutzt, wenn gleichzeitig ALLE der VM zugewiesenen Kerne zur Verfügung stehen, also niemals einer VM mehr vCPUs zuweisen als erforderlich.

 

Ein paar Tipps zum Thema:

Performance-Optimierung Hyper-V

http://msdn.microsoft.com/en-us/library/Windows/Hardware/dn529133.aspx

http://msdn.microsoft.com/en-us/library/dd722835(v=bts.10).aspx

http://www.techrepublic.com/blog/five-apps/five-tips-for-fitting-more-virtual-machines-onto-a-hyper-v-host/

http://www.virtualizationadmin.com/articles-tutorials/microsoft-hyper-v-articles/load-balancing-high-availability/resource-allocation-hyper-v-part1.html

 

Zum Sizing eignet sich das MAP Toolkit sehr gut:

http://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx

 

Mit besten Grüßen,

Shrek

 

Microsoft MVP - Virtual Machine

bearbeitet von IT-Shrek
Link zu diesem Kommentar

Hallo Shrek,

 

vielen Dank für die zweite ausführliche Hilfe heute. Einer der Links hat die Ressourcensteuerung sehr gut erklärt. Aber vielleicht habe ich die anderen Bereiche nur zu Oberflächlich überflogen, aber diese Quoten/Ratio sind mir noch nicht ganz klar.

 

Meint das einfach, dass Verhältnis von tatsächlich vorhandenen Prozessorkernen zu (über alle virtuellen Maschinen hinweg) zugewiesenen Prozessoren? An einer Stelle heißt es:

 

It is possible to overcommit your system's physical CPU resources by allocating more virtual CPUs than you have logical CPUs. In most cases, you can get away with this type of overcommitment without any negative consequences, so long as yout don't go overboard. Using a 2-to-1 ratio of virtual CPUs to logcal CPUs is usually safe if your virtual machines aren't carrying a heavy workload.

 

Also ich habe eine 4-Kern CPU und 4 VMs, denen ich aber jeweils die 4 Kerne zugewiesen habe. Ist dieses 1:4 (4:1) dann das, was Du unter Quoten/Ratio verstehst? Ist es nicht, oder? Und - dem Text folgend - sollte man jetzt mehr virutelle Kerne zuweisen als man hat (so lange man 2:1 nicht überschreitet)? Kann man machen? Eher nicht?

 

Das würde doch aber auch bedeuten, dann ich nicht zwingend eine CPU, bzw. einen CPU-Kern für das Hostsystem übrig lassen muss, oder?

 

MfG Blase

 

 

 

 

 

 

Link zu diesem Kommentar

Wobei Du schon seinen Beitrag weiter oben berücksichtigen solltest. Möglichst nicht mehr Kerne zuweisen als nötig. Für viele Workloads reichen z.B. einer bis zwei aus.

 

Wenn Du wie in Deinem Beispiel erwähnt eine 4-Kern CPU hast, dann solltest Du es vermeiden einer VM tatsächlich 4 Kerne zuzuweisen. Einfach weil es für den Host relativ mühsam ist, wirklich alle Kerne freizuschaufeln, weil er selbst ja auch was haben will. Vorteilhafterweise auch nicht mehr Kerne, als z.B. ein Sockel hat. Dann ist die Chance grösser, dass alles im gleichen Sockel verarbeitet wird. Ist HT aktiviert, ist ds wieder etwas entspannter und einfacher für den Host, weil die CPU das 'freischaufeln' übernimmt bzw. die Zyklen dazwischen schiebt.

 

Wenn mehrere VM's definiert sind, die alle viele Kerne oder gar alle der CPU haben (wie in Deinem Rechnungsbeispiel), dann wird dein System unglaublich langsam werden, weil für jeden Zyklus den eine VM machen muss, alle Kerne frei sein müssen. Hast dann noch eine 1-Kern VM welche gut ausgelastet ist, dann ziehts dir die Performance komplett in den Keller.

Link zu diesem Kommentar

Moin Weingeist,

 

verstehe ich Deinen Einwand also so, als das man - über alle VMs hinweg - zwar immer noch "beruhigt" mehr CPU-Kerne zuweisen kann, als man insgesamt "physikalisch" zur Verfügung hat, aber das man einer einzelnen VM nie die komplette Anzahl zuweisen sollte? Weil im Extremfall dann für den Host nichts mehr übrig bleibt?!

In meinem Fall kann ich also - vereinfacht ausgedrückt - mit meiner 4-Kern CPU und meinen 4 VMs den 4 VMs jeweils 3 Kerne zuweisen. Dann habe ich insgesamt zwar mehr zugewiesen, als ich tatsächlich habe, aber keiner Maschine die volle Anzahl... So richtig?! Davon ausgehend, dass IMMER eine gewisse "Last" von den verschiedenen VMs erzeugt wird, verstehe ich den Unterschied aber wohl nicht. Entweder habe ich meine CPU Kerne komplett (oder sogar darüber hinaus) zugewiesen - und die Kerne werden benötigt/ausgelastet, oder eben nicht. In wie fern spielt es da eine Rolle, ob die Zuweisung komplett für eine VM drauf geht, oder aber "Scheibchenweise" über mehrere VMs? Zumal in beiden Fällen ja der Host nichts "übrig" hat an CPU Kernen. Magst Du mir das vielleicht noch etwas näher erklären?

 

Grundsätzlich ist klar, dass ich nur soviel wie nötig zuweise. Also meinetwegen einem Terminal- oder Datenbank-Server mehr als einem AD-Controller oder Fileserver.

 

MfG Blase

Link zu diesem Kommentar

Hallo,

 

nein, Weingeist zielt auf etwas anderes hinab. Eine VM rechnet immer nur dann, wenn ihr alle zugewiesenen CPU Kerne zur Verfügung stehen. Bedeutet:

 

Dein SQL-Server mit 4 vCPUs führt deine DB Abfrage erst durch, wenn der Host dieser VM gleichzeitig vier CPU Cyclen zur Verfügung stellt, auch wenn in diesem Fall nur einer erforderlich wäre. Dadurch wäre in diesem Fall eine VM mit nur 2 vCPUs "schneller". Daher ist der Grundsatz "nur soviel wie nötig" zuweisen, nicht nur so dahergesagt, sondern ein wichtiger Bestandteil beim VM Sizing.

 

Beste Grüße,

Shrek

Link zu diesem Kommentar

Hallo Shrek,

 

ok, das ist in der Tat eine wichtige Information - habe ich verstanden. Aber trotzdem ist die Mehrfachbelegung und die von Dir angesprochene Quote von 1:6 dann kein Problem? Bedeutet doch, dass wenn ich meinen 4 Kern Prozessor hätte, ich bereits 8 VMs á 3 vCores haben müsste, um das Verhältnis überhaupt zu schaffen. Das wäre immer noch eine "performante" Konstellation (CPU-seitig)? Du hast zwar geschrieben, dass die CPU Last bei aktuellen Host-Systemen heutzutage das kleinste Problem sei, aber grade in dem von Dir beschriebenen Kontext (Ausführung der Anfrage erst dann, wenn alle zugewiesenen CPU Cyclen zur Verfügung stehen), ist es für mich schwer, das nachzuvollziehen.

Mir fehlen wohl auch schlicht die Erfahrungswerte.... In der Praxis ist es also eher nie so, dass dem Hostsystem noch Cores (exklusiv) zur Verfügung stehen, ganz einfach weil die Mehrfachbelegung "best practice" ist...?!

 

Hab vielen Dank für Deine Hilfe!

 

Falls wir nichts mehr hören, frohes Fest und lecker Essen! :D

 

MfG Blase

Link zu diesem Kommentar

Hallo Shrek,

 

ok, das ist in der Tat eine wichtige Information - habe ich verstanden. Aber trotzdem ist die Mehrfachbelegung und die von Dir angesprochene Quote von 1:6 dann kein Problem? Bedeutet doch, dass wenn ich meinen 4 Kern Prozessor hätte, ich bereits 8 VMs á 3 vCores haben müsste, um das Verhältnis überhaupt zu schaffen.

 

Du musst das Verhältnis ja nicht erreichen, dass ist eher ein Maximalwert, bei dem man sich überlegen sollte die Anzahl der CPU's zu Erhöhen oder mehr Hosts hinzustellen.

Es ist ja auch kein Problem 8 VM's mit einer vCPU laufen zu lassen.

Link zu diesem Kommentar

Hallo,

 

Du musst das Verhältnis ja nicht erreichen, dass ist eher ein Maximalwert, bei dem man sich überlegen sollte die Anzahl der CPU's zu Erhöhen oder mehr Hosts hinzustellen.

Es ist ja auch kein Problem 8 VM's mit einer vCPU laufen zu lassen.

 

beides kann man so pauschal nicht behaupten, es ist in jedem Falle (und in beide Richtungen) eine Sizing Frage, die in hohem Maße abhängig ist vom in den VMs betriebenen Workloads. Es handelt sich also lediglich um Richtwerte. Ich führe mein VM Sizing in der Regel mit dem Microsoft Assesment and Planning Toolkit durch. (http://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx)

 

Shrek

bearbeitet von IT-Shrek
Link zu diesem Kommentar
  • 2 Wochen später...

Wie spuckt das NUMA Thema eigentlich da noch in die Suppe?

Mal angenommen ich habe 2 CPUs mit je 4 Kernen.

 

Nun erstelle ich eine VM mit 5 oder 6 Kernen. Diese müsste ja dann rein technisch über beide CPU's sich erstrecken? 

 

Wie sieht es aus, wenn ich einer VM 4 vCPUs zuteile aber auf jeder CPU sind nur zwei Kerne frei? Kann die VM dann trotzdem zwei kerne von der einen und 2 von der anderen CPU nutzen?

Link zu diesem Kommentar

Moin,

 

bei NUMA geht nicht um CPU Kerne, sondern um den Arbeitsspeicherzugriff.

Im Idealfall greift jeder phyische Prozessor auf den Arbeitsspeicher zu, der direkt über die eigenen Lanes angebunden ist. NUMA erlaubt es, dem Prozessor Arbeitsspeicher zu Nutzen, der über die Lanes eines weiteren Prozessors angebunden ist.

 

Bei vCPU geht es um Multi Thread Operationen. Je vCPU wird zur Ausführung ein Thread auf dem Host benötigt. Hat eine VM mehr vCPUs als ein Prozessor Threads bereitstellen kann, wird die Anforderung von mehreren physischen CPUs bedient.

 

Hier ist ein netter Artikel zum Thema:

http://www.benjaminathawes.com/2011/11/09/determining-numa-node-boundaries-for-modern-cpus/

Link zu diesem Kommentar
  • 4 Wochen später...

Hallo,

 

Ich möcht mich in diese Thematik auch mal kurz mit einklinken.

 

Kurzes Rechnenbeispiel:

 

Angenommen mein Server besitzt nur eine CPU mit 4 Kernen und diese beherrscht HyperThreading, demnach habe ich nun 8 logische CPU's.

Laut Microsoft gibt es die Empfehlung von 8:1, sprich ich kann 8 vCPU's einem logischen CPU zuordnen. Daraus ergibt sich eine maximale Anzahl vCPU's von 64 (8 vCPU's * 8 log.CPU's). Ich kann also 64 VM's mit je einer vCPU austatten. Für den Host kalkuliere ich zwei CPU's, also sind noch 62 VM's mit je einem vCPU möglich.

 

Meine Fragen dazu:

 

1. Ist dieses 8:1 Verhältnis von vCPU zu log CPU die Best Price Vorgabe von Microsoft?

3. Wer teilt eigentlich die vCPU's den logischen zu?

2. Wird normalerweise bei einer Ressourcenallokation mit HyperThreading oder ohne die Anzahl an max.virtuellen CPU's berechnet?

 

 

Gruß und schönes We schonmal!

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...