可以使用 vSphere Web Client 为虚拟机设置超线程内核共享模式。

表 1. 超线程内核共享模式

选项

描述

任意

超线程系统上所有虚拟机的默认值。具有该设置的虚拟机的虚拟 CPU 可与该虚拟机或任何其他虚拟机的其他虚拟 CPU 随时共享内核。

虚拟机的虚拟 CPU 不应彼此共享内核,或不应与其他虚拟机的虚拟 CPU 共享内核。即,该虚拟机的每个虚拟 CPU 本身始终应获得完整的内核,而该内核上的另一个逻辑 CPU 则置于暂停状况。

内部

该选项类似于“无”。该虚拟机的虚拟 CPU 不能与其他虚拟机的虚拟 CPU 共享内核。这些虚拟 CPU 可以与同一虚拟机的其他虚拟 CPU 共享内核。

只能为 SMP 虚拟机选择此选项。如果应用于单处理器虚拟机,则系统会将该选项更改为“无”。

这些选项不会影响公平性或 CPU 时间分配。无论虚拟机的超线程设置如何,它仍然会得到与 CPU 份额成比例的 CPU 时间,且会受到 CPU 预留和 CPU 限制值的约束。

对于典型的工作负载,自定义超线程设置并非必要设置。对于与超线程交互不良的非常见工作负载,该选项很有用。例如,具有缓存颠簸问题的应用程序可能会让共享其物理内核的应用程序降低速度。可以将运行该应用程序的虚拟机置于“无”或“内部”超线程状态,以将其与其他虚拟机隔离开。

如果虚拟 CPU 具有超线程限制,不允许该虚拟 CPU 与其他虚拟 CPU 共享内核,那么,当其他虚拟 CPU 有资格消耗处理器时间时,系统可能取消对该虚拟 CPU 的调度。如果没有超线程限制,则可以在同一内核上调度这两个虚拟 CPU。

对于(每个虚拟机)内核数有限的系统,问题会变得更糟。这些情况下,可能没有内核来让取消调度的虚拟机进行迁移。因此,超线程设置为“无”或“内部”的虚拟机性能可能会降低,这一点对于内核数有限的系统而言尤其明显。