Best Practice: vCPUs pro physischem Kern

27

Ich versuche, Dokumentationen oder Best-Practice-Anleitungen für die Virtualisierung in Bezug auf die Bereitstellung von vCPUs pro physischem Kern (einer CPU) zu finden. Wenn es darauf ankommt, suche ich bei vmWare nach der Virtualisierungsimplementierung. Beispielsweise kann eine Intel Xeon-CPU 4, 8 usw. Kerne aufweisen. Ich möchte mehr über die Bereitstellung von mehr als nur einer vCPU pro physischem Kern erfahren. Der Hersteller, mit dem ich spreche, ist definitiv der Meinung, dass ein einzelner Core in mehreren vCPUs bereitgestellt werden kann.

Was ich bisher in meiner Forschung häufig sehe, ist: "Nun, es hängt von Ihrer Anwendung ab." In diesem Fall bearbeitet meine Anwendung Code, kompiliert / verknüpft, testet und verwaltet die Konfiguration. Natürlich müssen nicht alle VMs mit mehreren vCPUs pro Kern konfiguriert werden, aber im Allgemeinen.

Dr. Watson
quelle

Antworten:

24

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

Denken Sie daran, dass in VMware die CPU-Auslastung in MHz und nicht in Kernen angegeben wird. Wenn Sie nicht STÄNDIG alle Ihre virtuellen CPUs auf 100% festlegen , ist Ihr Anbieter meines Erachtens nicht korrekt.

Schauen wir uns den folgenden Systemcluster an ...

  • 9 ESXi-Hosts.
  • 160 virtuelle Maschinen
  • 104 physische CPU-Kerne im Cluster.
  • Das durchschnittliche Profil der virtuellen Maschine beträgt: 4 vCPU und 4 GB bis 18 GB RAM.
  • CPU kann sicher überzeichnet sein ... aber denken Sie daran, dass sie auch auf VM-Ebene begrenzt, reserviert und priorisiert werden kann.

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

von einem anderen aktiven Cluster - 3 hostet 42 virtuelle Maschinen Bildbeschreibung hier eingeben

ewwhite
quelle
4
Nachdem ich 3936 vMotion-Migrationen gesehen habe, fühle ich mich nicht schlecht in Bezug auf unsere 1.200
Mark Henderson
2
Ich habe mir gestern die Statistiken in unserem VM-Cluster angesehen, die die Zahlen von @ewwhite bestätigen. Wir haben 3 Hosts mit insgesamt 24 Prozessoren und 55 GHz. Wir haben 59 VMs mit insgesamt 79 zugewiesenen vCPUs. Laut vSphere-Statistiken haben wir in den letzten 6 Monaten im Durchschnitt etwas mehr als 14 GHz verwendet (min. 9 GHz, max. 25 GHz), und während dieser Zeit gab es 0 CPU-Core-Count-Konflikte.
Paul Gear
7

Wenn Sie nicht ausdrücklich mehrere vCPUs oder mehrere Kerne pro vCPU verwenden, können Sie einer VM mehrere vCPUs / Kerne zuweisen, um die Beschreibung von ewwhite zu erweitern. Tatsächlich ist die Leistung in den meisten Fällen geringer als auf einer einzelnen vCPU, der ein Kern zugewiesen ist, was zum Teil auf den Zeitaufwand zurückzuführen ist, 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. Natürlich unter Berücksichtigung von Büroarbeitsplätzen. Wenn Ihre VMs ständig mit dem Kompilieren von Code beschäftigt sind, können Sie möglicherweise nicht 5 vCPUs pro physischem Kern anpassen.

Der Grund, warum so viele Leute sagen, dass "es abhängt", ist, weil es wirklich tut. Sehen Sie sich Ihre CPU Ready-Werte an und entscheiden Sie, ob Sie ein bestimmtes System stärker mit CPU auslasten können. CPU Ready ist ein Maß dafür, dass die vCPU bereit ist, einen Befehl auszuführen, aber warten muss, bis die physische CPU-Zeit verfügbar ist.

In Ihrem Fall, wenn Sie große Programme kompilieren, ist es durchaus möglich, dass Ihre VMs tatsächlich viel CPU-Zeit benötigen. Wie ewwhite feststellte, ist die Virtualisierung normalerweise eher auf Festplatten-E / A und RAM beschränkt als auf die CPU.

Reality Extractor
quelle
13
absolutely zero benefit in allocating multiple vCPUs/cores to a VM- nicht ganz richtig. Wir haben eine Single-Threaded-Anwendung, die früher wöchentlich hängt. Wenn eine einzelne vCPU zu 100% ausgelastet war, war es nicht möglich, auf dieses System zuzugreifen, und wir mussten die VM auf Hypervisor-Ebene zurücksetzen. Wir haben eine zweite vCPU hinzugefügt, und als die App hängen blieb, konnten wir problemlos in den anstößigen Thread einsteigen und ihn beenden. Dies ist ein Randfall, der wahr ist, aber man kann niemals absolut damit umgehen.
Mark Henderson
4
Was Mark schrieb, ist der Grund, warum wir zwei Kerne als Untergrenze für jede VM verwenden - egal, ob sie es brauchen oder nicht.
Nils
2
Der Wert für "Bereit" ist die beste Methode, um festzustellen, ob Sie Ihren Host übermäßig bereitgestellt haben. Der Wert für "Bereit" sollte so niedrig wie möglich sein. Dies ist der Prozentsatz der Zeit, in der eine VM "bereit" ist, einen CPU-Zyklus zu verwenden, aber warten muss, da die CPU mit einer anderen Aufgabe beschäftigt ist. Um zu erklären, warum das Anbieten vieler Kerne für Ihr VM eine Auswirkung auf die Leistung haben kann, wird ein einfaches Beispiel verwendet: Wenn ich 4 physische Kerne und 4 VMs habe, wenn Sie 3 VMs mit 2 Kernen und eine VM mit 4 Kernen haben, erhalten Ihre kleineren VMs tatsächlich mehr Zyklen, da sie um ein Vielfaches besser "passen". Gehen Sie mit Ihrem vcpus so konservativ wie möglich vor!
Rqomey
@ MarkHenderson Ich kann sehen, wie nützlich das sein könnte, und so etwas könnte möglicherweise dem Typen passieren, der die Frage gestellt hat, da er mit Compilern zusammenarbeitet.
Reality Extractor
@Nils Ich glaube, dass es eine wirklich schlechte Idee ist, jedem VM 2-Cores zu geben, ob es einen geschäftlichen Bedarf dafür gibt oder nicht. Es könnte Sie in vielerlei Hinsicht negativ beeinflussen, die Größe des Steckplatzes, nicht genügend Kerne für Neustart / Failover, Leistungseinbußen aufgrund dessen, was Rqomey geschrieben hat, nur unzählige andere Dinge. Sie können so ziemlich immer über vCenter und DCUI auf Ihre VM zugreifen.
Reality Extractor
3

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

Solange die gleichzeitige Auslastung aller verwendeten vCPUs nicht die Auslastung überschreitet, die von Ihren physischen Kernen bewältigt werden kann, 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 eine Kompilierung erforderlich ist, erfolgt dies so schnell wie möglich (sofern Ihr Compiler Paralell-Kompilierung unterstützt).

Dies gilt möglicherweise nicht für eine Compiler-VM, die ständig ausgelastet ist (z. B. wenn Sie einen Internet-Dienst zum Kompilieren bereitstellen, der ständig verwendet wird).

Nils
quelle
2

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

Paul Gear
quelle
1
Was ist mit der Rückseite? Was ist, wenn ich ein 6-Core-Xeon habe und nur 4 Kerne in der VM reserviere? Was wäre dann die Leistung? Wird das VM-System in der Lage sein, Strom aus allen 6 physischen Kernen zu gewinnen, oder wird es auf 4 begrenzt sein?
Overmind
Wenn Sie ihm nur 4 Kerne geben, hat er gleichzeitig nur Zugriff auf 4 Kerne. Mein Verständnis (nicht bestätigt) ist jedoch, dass diese 4 virtuellen Kerne allen 4 der 6 physischen Kerne zugewiesen werden können, es sei denn, Sie haben das Fixieren konfiguriert.
Paul Gear