Los procesadores de varios núcleos ofrecen muchas ventajas para un host que realiza múltiples tareas de máquinas virtuales.

Intel y AMD desarrollaron procesadores que combinan dos o más núcleos de procesadores en un solo circuito integrado (a menudo denominado paquete o socket). VMware utiliza el término socket para describir un solo paquete, que puede tener uno o varios núcleos de procesadores con uno o varios procesadores lógicos en cada núcleo.

Un procesador de dos núcleos, por ejemplo, puede ofrecer casi el doble de rendimiento de un procesador de un solo núcleo, ya que permite la ejecución simultánea de dos CPU virtuales. Por lo general, los núcleos de un mismo procesador se configuran con una memoria caché compartida de último nivel utilizada por todos los núcleos, lo que potencialmente reduce la necesidad de acceder a la memoria principal más lenta. Un bus de memoria compartida que conecta un procesador físico con la memoria principal puede limitar el rendimiento de sus procesadores lógicos si las máquinas virtuales que funcionan en ellos ejecutan cargas de trabajo con uso intensivo de memoria, que compiten por los mismos recursos de bus de memoria.

El programador de CPU ESXi puede utilizar de manera independiente cada procesador lógico de cada núcleo de procesador para ejecutar máquinas virtuales, lo que ofrece capacidades similares a los sistemas SMP. Por ejemplo, una máquina virtual bidireccional puede tener sus propios procesadores virtuales en ejecución en procesadores lógicos que pertenecen al mismo núcleo, o en procesadores lógicos de núcleos físicos diferentes.

El programador de CPU ESXi puede detectar la topología del procesador y las relaciones entre núcleos de procesador y los procesadores lógicos en ellos. Esta información se utiliza para programar máquinas virtuales y optimizar su rendimiento.

El programador de CPU ESXi puede interpretar la topología del procesador, incluidas las relaciones entre sockets, núcleos y procesadores lógicos. El programador utiliza la información de topología para optimizar la selección de ubicación de CPU virtuales en sockets diferentes para maximizar la utilización general de la memoria caché, así como para mejorar la afinidad de la memoria caché mediante la reducción de las migraciones de CPU virtuales.

En algunos casos (por ejemplo, cuando una máquina virtual SMP exhibe un uso compartido de datos significativo entre sus CPU virtuales), este comportamiento predeterminado puede no ser óptimo. Para este tipo de cargas de trabajo, puede ser conveniente programar todas las CPU virtuales en el mismo socket con una memoria caché compartida de último nivel, incluso si el host ESXi está subasignado. En estas situaciones, puede anular el comportamiento predeterminado de distribuir CPU virtuales entre paquetes. Para ello, incluya la siguiente opción de configuración en el archivo de configuración .vmx de la máquina virtual: sched.cpu.vsmpConsolidate="TRUE".