Prozessoren mit mehreren Kernen bieten zahlreiche Vorteile für einen Host, der mehrere Aufgaben virtueller Maschinen gleichzeitig ausführt.

Die von Intel und AMD entwickelten Prozessoren kombinieren zwei oder mehrere Prozessorkerne in einem einzelnen integrierten Schaltkreis (häufig als Paket oder Socket bezeichnet). VMware verwendet den Begriff „Socket“, um ein einzelnes Paket zu beschreiben, das mindestens einen Prozessorkern mit mindestens einem logischen Prozessor in jedem Kern umfassen kann.

Beispielsweise kann ein Prozessor mit zwei Kernen annähernd die doppelte Leistung eines Prozessors mit einem Kern erbringen, da er die gleichzeitige Ausführung von zwei virtuellen CPUs ermöglicht. Kerne innerhalb eines Prozessors verfügen in der Regel über einen von allen Kernen genutzten Last-Level-Cache, wodurch die erforderlichen Zugriffe auf langsameren Hauptarbeitsspeicher verringert werden können. Ein gemeinsam genutzter Arbeitsspeicherbus, der einen physischen Prozessor mit einem Hauptarbeitsspeicher verbindet, kann zu einer Leistungseinschränkung der logischen Prozessoren führen, wenn die darauf ausgeführten virtuellen Maschinen arbeitsspeicherintensive Arbeitslasten ausführen, die um dieselben Ressourcen des Arbeitsspeicherbusses konkurrieren.

Alle logischen Prozessoren der einzelnen Prozessorkerne lassen sich unabhängig voneinander vom ESXi-CPU-Scheduler zum Ausführen virtueller Maschinen verwenden, wodurch Funktionen bereitstellt werden, die mit SMP-Systemen vergleichbar sind. Beispielsweise kann eine virtuelle Zwei-Wege-Maschine die eigenen virtuellen Prozessoren auf logischen Prozessoren ausführen, die zum selben Kern gehören oder sich auf anderen physischen Kernen befinden.

Der ESXi-CPU-Scheduler kann die Prozessortopologie und die Beziehungen zwischen Prozessorkernen und den darauf befindlichen logischen Prozessoren erkennen. Diese Informationen werden zur Planung der virtuellen Maschinen und Leistungsoptimierung eingesetzt.

Der ESXi-CPU-Scheduler kann die Prozessortopologie erkennen, einschließlich der Beziehungen zwischen Sockets, Kernen und logischen Prozessoren. Der Scheduler verwendet Topologieinformationen zum Optimieren der Platzierung von virtuellen CPUs auf verschiedene Sockets, um die gesamte Cache-Verwendung zu optimieren und die Cache-Affinität durch die Minimierung der Migration von virtuellen CPUs zu verbessern.

In unterbelegten Systemen verteilt der ESXi-CPU-Scheduler die Last standardmäßig über alle Sockets. Dies verbessert die Leistung durch das Maximieren des gesamten für die ausgeführten virtuellen CPUs verfügbaren Caches. Dadurch werden die virtuellen CPUs einer einzelnen virtuellen SMP-Maschine über mehrere Sockets verteilt (es sei denn, dass jeder Socket auch ein NUMA-Knoten ist, da der NUMA-Scheduler dann alle virtuellen CPUs der virtuellen Maschine auf denselben Socket beschränkt).

In einigen Fällen, z. B. wenn eine virtuelle SMP-Maschine einen erheblichen Datenaustausch zwischen seinen virtuellen CPUs aufweist, kann dieses Standardverhalten suboptimal sein. Für solche Arbeitslasten kann es hilfreich sein, alle virtuellen CPUs auf denselben Socket zu legen, mit einem gemeinsam genutzten Last-Level-Cache, selbst wenn der ESXi-Host unterbelegt ist. In solchen Szenarien können Sie das standardmäßige Verbreiten von virtuellen CPUs über Pakete außer Kraft setzen, indem Sie die folgende Konfigurationsoption in die .vmx-Konfigurationsdatei aufnehmen: sched.cpu.vsmpConsolidate="TRUE".