Les processeurs multicœur présentent de nombreux avantages pour un hôte effectuant des tâches multiples sur des machines virtuelles.

Intel et AMD ont développé des processeurs combinant deux cœurs de processeur ou plus en un circuit intégré unique (souvent appelé module ou socket). VMware utilise le terme socket pour décrire un module unique pouvant posséder un ou plusieurs cœurs de processeur avec un ou plusieurs processeurs logiques dans chaque cœur.

Par exemple, un processeur à deux cœurs peut fournir presque le double des performances d'un processeur à cœur unique, en permettant à deux CPU virtuels de s'exécuter simultanément. Les cœurs d'un même processeur sont généralement configurés avec un cache de dernier niveau partagé utilisé par tous les cœurs, ce qui peut potentiellement réduire le besoin d'accéder à une mémoire principale plus lente. Un bus de mémoire partagée raccordant un processeur physique à la mémoire principale peut limiter les performances de ses processeurs logiques si les machines virtuelles s'exécutant sur ces processeurs exécutent des charges de travail consommatrices de mémoire se partageant les mêmes ressources de bus de mémoire.

Tous les processeurs logiques de chaque cœur de processeur sont utilisés indépendamment par ESXi CPU Scheduler pour exécuter des machines virtuelles, ce qui offre des possibilités semblables à celles des systèmes SMP. Par exemple, les processeurs virtuels d'une machine virtuelle à deux voies peuvent s'exécuter sur des processeurs logiques appartenant au même cœur ou sur des processeurs logiques sur différents cœurs physiques.

ESXi CPU Scheduler peut détecter la topologie de processeur ainsi que les relations entre les cœurs de processeur et leurs processeurs logiques. Il utilise ces informations pour programmer les machines virtuelles et optimiser les performances.

ESXi CPU Scheduler peut interpréter la topologie de processeur, y compris les relations entre les sockets, cœurs et processeurs logiques. Le programmateur utilise les informations de topologie pour optimiser le placement des CPU virtuels sur différents sockets. Cette optimisation permet d'optimiser l'utilisation globale de cache et d'améliorer l'affinité de cache en minimisant les migrations de CPU virtuels.