Frage Best Practice: vCPUs pro physischem Kern


Ich versuche, einige Dokumentationen oder Best-Practice-Anleitungen für die Virtualisierung in Bezug auf die Bereitstellung von vCPUs pro physischen Kern (einer CPU) zu finden. Wenn es darauf ankommt, schaue ich auf vmWare für die Virtualisierungsimplementierung. Zum Beispiel kann eine Intel Xeon CPU 4, 8 usw. Kerne haben. Ich bin daran interessiert, mehr über die Bereitstellung von mehr als nur einer vCPU pro physischem Kern zu erfahren. Der Anbieter, mit dem ich spreche, denkt definitiv, dass ein einzelner Kern in mehrere vCPUs bereitgestellt werden kann.

Was ich bisher in meinen Forschungen gesehen habe, ist: "Nun, es hängt von Ihrer Anwendung ab." Und in diesem Fall bearbeitet meine Anwendung Code, Kompilierungs- / Verknüpfungs-, Test- und Konfigurationsmanagement. Natürlich müssen nicht alle VMs mit mehreren vCPUs pro Kern konfiguriert werden, sondern im allgemeinen Fall.


22
2018-05-02 21:59


Ursprung




Antworten:


Eine einzelne physische CPU kann für so viele vCPUs verwendet werden. In Virtualisierungslösungen sind selten die CPU-Ressourcen erschöpft. RAM und Speicher sind immer die begrenzenden Faktoren ...

Denken Sie daran, dass in VMware die CPU-Auslastung in MHz und nicht in Kernen dargestellt wird. Es sei denn, Sie binden alle Ihre virtuellen CPUs zu 100% ein. DIE GANZE ZEITIch glaube nicht, dass Ihr Verkäufer korrekt ist.

Schauen wir uns das folgende Systemcluster an ...

  • 9 ESXi-Hosts.
  • 160 virtuelle Maschinen
  • 104 physische CPU-Kerne im gesamten Cluster
  • Das durchschnittliche virtuelle Computerprofil ist: 4 vCPU und 4 GB bis 18 GB RAM.
  • CPU kann sicher überzeichnet werden ... aber denken Sie daran, es kann auch sein begrenzt, reserviert und priorisiert auf VM-Ebene.

enter image description here enter image description here

von einem anderen aktiven Cluster - 3 Hosts 42 virtuelle Maschinen enter image description here


20
2018-05-02 22:13



Nachdem ich 3936 vMotion Migrationen gesehen habe, fühle ich mich nicht schlecht über unsere 1.200 - Mark Henderson♦
Ich habe gestern die Statistiken auf unserem VM-Cluster betrachtet, die die von @ewwhite gemachten Zahlen bestätigen. Wir haben 3 Hosts, insgesamt 24 Prozessoren und 55 GHz. Wir haben 59 VMs mit insgesamt 79 vCPUs zugewiesen. Laut den Statistiken von vSphere haben wir in den letzten 6 Monaten etwas über 14 GHz gemittelt (min. 9 GHz, max. 25 GHz), und während dieser Zeit gab es 0 CPU Core Count Contention. - Paul Gear


Um das upwhite-Write-up zu erweitern, müssen Sie, wenn Sie nicht über Anwendungen verfügen, die explizit mehrere vCPUs oder mehrere Cores pro vCPU nutzen können, absolut keinen Vorteil bei der Zuweisung mehrerer vCPUs / Cores zu einer VM erzielen. Tatsächlich werden Sie in der Regel eine geringere Leistung erzielen, als wenn Sie nur eine einzige vCPU verwenden, der ein Kern zugewiesen ist. Dies liegt zum Teil an dem Zeitplanungsaufwand, der für die Ausführung mehrerer vCPUs erforderlich ist.

FWIW, in einer VDI-Einstellung beträgt die häufig genannte Anzahl 5 vCPUs pro physischem Kern. Das berücksichtigt natürlich Büroarbeitsplätze. Wenn Ihre VMs ständig damit beschäftigt sind, Code zu kompilieren, können Sie möglicherweise nicht 5 vCPUs pro physischen Kern hinzufügen.

Der Grund, warum so viele Leute sagen, "es kommt darauf an" ist, weil es wirklich so ist. Sehen Sie sich Ihre CPU Ready-Werte an und entscheiden Sie dann, ob Sie ein bestimmtes System mit mehr CPU-Last versorgen können. CPU-Ready ist ein Maß dafür, dass die vCPU zur Ausführung eines Befehls bereit ist, muss jedoch darauf warten, dass die physische CPU-Zeit verfügbar wird.

In Ihrem Fall, wenn Sie große Programme kompilieren, ist es durchaus möglich, dass Ihre VMs wirklich viel CPU-Zeit benötigen. Wie bereits erwähnt, neigt die Virtualisierung in der Regel dazu, Festplatten-E / A und RAM-Speicher zu sein und nicht CPU-bedingt.


7
2018-05-03 03:53



absolutely zero benefit in allocating multiple vCPUs/cores to a VM - nicht ganz richtig. Wir haben eine single-threaded-Anwendung, die früher einmal aufhängen musste. Wenn eine einzelne vCPU bei 100% war, war es unmöglich, auf dieses System zuzugreifen, und wir mussten einen Hypervisor-Level-Reset der VM durchführen. Wir fügten eine zweite vCPU hinzu und als die App aufhörte, konnten wir leicht den tätlichen Thread töten. Das ist ein bisschen ein Randfall, aber Sie können niemals absolut handeln. - Mark Henderson♦
Was Mark geschrieben hat, ist der Grund, warum wir zwei Kerne als untere Grenze für jede VM verwenden - egal, ob sie es brauchen oder nicht. - Nils
Ready-Wert ist der beste Weg zu sagen, wenn Sie über die Bereitstellung Ihres Hosts sind, sollte Ihr bereit Wert so niedrig wie möglich sein. Es ist der Prozentsatz der Zeit, die eine VM "bereit" ist, um einen CPU-Zyklus zu verwenden, muss aber warten, während die CPU mit einer anderen Task beschäftigt ist. Um zu erklären, warum die vielen VMs viele Auswirkungen auf die Leistung haben können, werde ich ein einfaches Beispiel verwenden: Wenn ich 4 physische Cores und 4 VMs habe, wenn du 3 VMs mit 2 Cores und ein VM mit 4 Kernen hast, werden deine kleineren VMs aktiv mehr Zyklen, da sie besser in Vielfachen "passen" können. Gehen Sie so konservativ wie möglich mit Ihnen vcpus! - Rqomey
@MarkHenderson Ich kann sehen, wie das nützlich sein könnte, und so etwas könnte möglicherweise dem Typen passieren, der die Frage gestellt hat, da er mit Compilern arbeitet. - Reality Extractor
@ Nils Ich glaube, dass es wirklich eine schlechte Idee ist, jeder VM 2 Cores zu geben, ob es einen Geschäftsbedarf dafür gibt oder nicht. Es könnte dich in vielerlei Hinsicht negativ beeinflussen, Slot-Größe, nicht genug Kerne zum Neustart / Failover, verlorene Leistung aufgrund dessen, was Rqomey geschrieben hat, nur unzählige andere Dinge. Sie können so ziemlich immer über vCenter und DCUI in Ihre VM gelangen. - Reality Extractor


Das zugrundeliegende Problem ist im Grunde dasselbe wie bei der Prozessplanung auf einem physischen System. Solange die Systemlast unter der Anzahl der Kerne (oder sogar der logischen Prozessoren, im Falle von HyperThreading) liegt, ist alles in Ordnung und die Prozessoren können die Last verarbeiten.

Solange die gleichzeitige Belastung aller verwendeten vCPUs die Last, die von Ihren physischen Kernen bewältigt werden kann, nicht übersteigt, ist alles in Ordnung.

Für Ihre Anforderungen ist nur das Kompilieren eine CPU-intensive Arbeit, die nur von Zeit zu Zeit benötigt wird. Für die Compiler-VMs vergeben wir so viele CPUs wie verfügbar. Wenn also kompiliert werden muss, wird dies so schnell wie möglich erledigt (wenn Ihr Compiler paralleles Kompilieren unterstützt).

Dies gilt möglicherweise nicht für eine Compiler-VM, die ständig geladen ist (z. B. wenn Sie einen Internetdienst bereitstellen, der kompiliert und ständig verwendet wird).


3
2018-05-03 08:12





Eine Faustregel, die ich (möglicherweise in der Dokumentation von VMware) gesehen habe, ist es, nicht mehr Kerne einer VM zuzuweisen als physisch auf dem Host, da dies dazu führen würde, dass mehrere vCores in einem einzigen Kern emuliert werden und unnötiger Overhead entsteht.


1
2018-05-07 22:18



Was ist mit dem umgekehrten? Was ist, wenn ich einen 6-Kern Xeon habe und ich nur 4 Kerne in der VM zuteile? Was wäre dann die Leistung? Kann das VM-System Strom von allen 6 physischen Kernen aufnehmen oder ist es auf 4 begrenzt? - Overmind
Wenn Sie ihm nur 4 Kerne geben, hat er nur Zugriff auf 4 Kerne gleichzeitig. Aber mein Verständnis (nicht bestätigt) ist, dass diese 4 virtuellen Kerne möglicherweise auf 4 der 6 physikalischen Kerne zugewiesen werden, sofern Sie das Pinning nicht konfiguriert haben. - Paul Gear