通过为每个虚拟机指定 CPU 关联性设置,可以仅将虚拟机只分配给多处理器系统中的某个可用处理器子集。通过使用此功能,可以将每个虚拟机分配到指定关联性集合中的处理器。

CPU 关联性指定虚拟机到处理器的放置位置的限制,与由虚拟机-虚拟机或虚拟机-主机关联性规则创建的关系不同,后一关联性规则指定虚拟机到虚拟机主机的放置位置的限制。

在这个上下文中,术语“CPU”指的是超线程系统上的逻辑处理器,同时也指非超线程系统上的内核。

某一虚拟机的 CPU 关联性设置适用于与该虚拟机相关联的所有虚拟 CPU 及其他所有线程(也叫做“环境”)。这些虚拟机线程可执行仿真鼠标、键盘、屏幕、CD-ROM 及其他旧设备时所需进行的处理工作。

在某些情况下(例如,占用大量显示资源的工作负载),可能会在虚拟 CPU 和其他虚拟机线程之间出现大量通信。如果虚拟机的关联性设置阻止了这些额外的线程与虚拟机的虚拟 CPU 同时进行调度,则性能可能会降低。例如,单处理器虚拟机与单个 CPU 关联,或双路 SMP 虚拟机仅与两个 CPU 关联。

为了获得最佳性能,在应用手动关联性设置时,VMware 建议您在关联性设置中至少要包含一个额外的物理 CPU,以便允许至少有一个虚拟机线程与其虚拟 CPU 同时调度。例如,单处理器虚拟机至少与两个 CPU 关联,或双路 SMP 虚拟机至少与三个 CPU 关联。

向特定处理器分配虚拟机

使用 CPU 关联性,可以向特定处理器分配虚拟机。通过此操作,可以将虚拟机只分配给多处理器系统中特定的可用处理器。

过程

  1. vSphere Client 中,浏览到虚拟机。
    1. 要查找虚拟机,请选择数据中心、文件夹、集群、资源池或主机。
    2. 选择虚拟机
  2. 右键单击虚拟机,然后单击编辑设置
  3. 在“虚拟硬件”下,展开 CPU
  4. 在“调度关联性”下,选择虚拟机的物理处理器关联性。
    使用“-”表示范围,使用“,”分隔值。
    例如,“0, 2, 4-7”表示处理器 0、2、4、5、6 和 7。
  5. 选择要运行虚拟机的处理器,然后单击确定

CPU 关联性的潜在问题

使用 CPU 关联性之前,可能需要考虑某些问题。

CPU 关联性的潜在问题包括:

  • 对于多处理器系统,ESXi 系统执行自动负载均衡。避免手动指定虚拟机关联性,以改进调度程序跨处理器均衡负载的能力。
  • 关联性可能会干扰 ESXi 主机满足为虚拟机指定的预留和份额的能力。
  • 因为 CPU 准入控制不考虑关联性,所以具有手动关联性设置的虚拟机可能不会始终得到其完整的预留量。

    没有手动关联性设置的虚拟机不会受到具有手动关联性设置的虚拟机的负面影响。

  • 将虚拟机从一个主机移动到另一个主机时,因为新的主机可能具有不同的处理器数,所以关联性可能不再适用。
  • NUMA 调度程序可能无法管理已经借助于关联性分配到某些处理器的虚拟机。有关详细信息,请参见配合使用 NUMA 系统和 ESXi
  • 关联性可能会影响主机在多核或超线程处理器上调度虚拟机以充分利用在这些处理器上共享资源的能力。