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.
quelle
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.
quelle
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.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).
quelle
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.
quelle