多核处理器为执行虚拟机多任务的主机提供了很多优势。

Intel 和 AMD 均已开发了将两个或两个以上处理器内核组合到单个集成电路(通常称为封装件或插槽)的处理器。VMware 使用“插槽”一词来描述单个封装件,该封装件可以具有一个或多个处理器内核且每个内核具有一个或多个逻辑处理器。

例如,双核处理器通过允许同时执行两个虚拟 CPU,可以提供几乎是单核处理器两倍的性能。同一处理器中的内核通常配备由所有内核使用的最低级别的共享缓存,这有可能会减少访问较慢主内存的必要性。如果运行在逻辑处理器上的虚拟机正运行争用相同内存总线资源且占用大量内存的工作负载,则将物理处理器连接到主内存的共享内存总线可能会限制其逻辑处理器的性能。

ESXi CPU 调度程序可以独立将每个处理器内核的每个逻辑处理器用于执行虚拟机,从而提供与 SMP 系统类似的功能。例如,2 路虚拟机可以让虚拟处理器运行在属于相同内核的逻辑处理器上,或运行在不同物理内核的逻辑处理器上。

ESXi CPU 调度程序可以检测处理器拓扑,以及处理器内核与它上面的逻辑处理器之间的关系。它使用此信息来调度虚拟机和优化性能。

ESXi CPU 调度程序可以解释处理器拓扑(包括插槽、内核和逻辑处理器之间的关系)。调度程序使用拓扑信息优化虚拟 CPU 在不同插槽上的放置位置,以最大化总体的缓存利用率,并通过最小化虚拟 CPU 迁移来改善缓存关联性。

但是,在某些情况下(例如,当 SMP 虚拟机显示出其虚拟 CPU 之间存在大量数据共享时),此默认行为可能不是最佳选择。对于此类工作负载,最好是调度相同插槽(具有最低级别的共享缓存)上的所有虚拟 CPU,即使 ESXi 主机未过载也是如此。在这些情况中,通过将以下配置选项包括在虚拟机的 .vmx 配置文件中,可以替代在封装件之间分配虚拟 CPU 的默认行为:sched.cpu.vsmpConsolidate="TRUE"