Hyper-V 中的处理器兼容模式

适用于:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows Server 2008 R2、Hyper-V Server 2019、Hyper-V Server 2016、Hyper-V Server 2012 R2

Hyper-V 提供处理器兼容模式,这是 Windows Server 2008 R2 中首次引入的功能。 使用处理器兼容模式,你可以在使用不同代系的处理器的虚拟化主机之间移动正在运行的虚拟机 (VM) 或保存状态。 此功能的工作原理是禁用许多新式处理器功能,这些功能可能会影响 VM 性能。 本文档提供有关 Hyper-V 的处理器兼容模式的详细信息。

何时使用处理器兼容性模式

处理器兼容模式适用于不涉及重启 VM 的任何 VM 移动方案。 其中包括 VM 实时迁移、保存和还原以及生产检查点。

不能跨使用不同 CPU 制造商的处理器的虚拟化主机实时迁移或保存和还原 VM。 例如,无法将正在运行的 VM 或处于已保存状态的 VM 从搭载 Intel 处理器的主机移到搭载 AMD 处理器的主机。 如果必须在这种情况下移动某个 VM,则必须先关闭该 VM,然后在新主机上重启它。

如果计划在可能使用不同代系处理器的虚拟化主机之间移动 VM 而不重启它们,则应启用处理器兼容模式。 例如,启用处理器兼容模式以确保可以在使用不同处理器功能集的群集节点之间实时迁移 VM。 还可以使用处理器兼容模式来保存 VM,并将其还原到其处理器功能集不同于源主机的主机上。

为何需要处理器兼容性模式

指令集体系结构 (ISA) 扩展是处理器制造商引入的优化和功能。 这些功能通常会将专用硬件用于特定任务来提高性能或安全性。 例如,许多媒体应用程序使用处理器功能来加速矢量计算。 运行应用程序时极少需要用到这些功能;这些功能只是用于提升性能。

处理器上提供的功能集因品牌、型号和面市时间而异。 操作系统和应用程序软件在首次启动时,通常会枚举系统的处理器功能集和功能。 软件会预期可用的处理器功能在其生命周期内没有变化,如果这些功能在物理计算机上运行,则它们就永远不会发生变化,因为处理器功能是静态的。

但是,可以通过 VM 移动功能将正在运行的 VM 迁移到新的虚拟化主机。 如果 VM 中的软件已检测到特定的处理器功能并开始使用该功能,然后该 VM 移到缺少该功能的新虚拟化主机,则该软件可能会出现故障。 这可能导致 VM 崩溃。

为避免这些故障,每当启动 VM 实时迁移或启动保存/还原操作时,Hyper-V 将执行“预先检查”。 这些检查会将源主机上的 VM 可用的处理器功能集与目标主机上可用的功能集进行比较。 如果这些功能集不匹配,则会取消迁移或还原操作。

处理器兼容模式的工作原理

处理器兼容模式通过仅向 VM 提供一组有限的处理器功能,确保在一组不同的虚拟化主机中供 VM 使用的处理器功能集会匹配。 处理器兼容模式会隐藏较新的处理器指令集(通常是过去 10 年内引入的指令集)。 但是,隐藏这些功能意味着来宾操作系统和应用程序软件无法利用这些处理器指令集增强功能。

有关为处理器兼容模式隐藏的功能的完整列表,请参阅虚拟机监控程序顶级功能规范中的 5.2.11 节。

Processor compatibility mode hides newer processor instructions sets for smooth VM migrations between host servers

使用处理器兼容模式的后果

很难量化处理器兼容模式的总体性能影响。 性能损失主要取决于 VM 中运行的工作负荷。 某些工作负荷不受影响,而另外一些工作负荷则会受到显著影响。 严重依赖硬件优化(例如加密、压缩或密集浮点计算)的软件会受到最大影响。

以下示例描述了使用处理器兼容模式如何影响 AES 加密,此外还有更多示例。 如果担心处理器兼容模式的性能影响,最好是将启用处理器兼容模式的 VM 工作负荷性能与禁用该模式的性能进行比较。

示例:AES 加密

受处理器兼容模式影响的一个操作示例是 AES 加密(一种常见的加密形式)。 许多新的 Intel 和 AMD 处理器包括一个 ISA 扩展,该扩展使用硬件来加速 AES。 Intel 声称,这种优化可提供 2-3 倍的性能提升,某些实现提供 10 倍的提升。 (有关详细信息,请参阅 Intel 高级加密标准指令。)

加密或解密大量数据的应用程序受益于此处理器功能,因此通过启用处理器兼容模式关闭它会影响这些特定操作的性能。

使用处理器兼容模式

在 Hyper-V 中使用处理器兼容模式时,需要了解一些重要概念:

  • 正在运行的 VM 只能在使用同一制造商的处理器的虚拟化主机之间迁移。

  • 必须先关闭 VM,然后才能启用或禁用处理器兼容性模式。

  • 涉及停止和重启 VM 的 VM 移动不需要处理器兼容模式。

  • 每当重启 VM 时,来宾操作系统都会枚举新主机上提供的处理器功能。

注意

在 Windows Server 中,Microsoft 建议仅在 VM 迁移方案之前启用处理器兼容模式,在迁移完成后将其关闭。

使用 Hyper-V 管理器启用处理器兼容模式

若要使用 Hyper-V 管理器为 VM 启用处理器兼容模式,请执行以下操作:

  1. 关闭 VM。

  2. 单击“开始”,指向“管理工具”,然后单击“Hyper-V 管理器”

  3. 选择运行 Hyper-V 的服务器和所需的 VM。

  4. 如果 VM 正在运行,则必须关闭 VM 以启用处理器兼容模式设置。

  5. 在“操作”窗格中,单击“设置”,然后单击“处理器”。

  6. 展开“处理器”,然后单击“兼容性”。

  7. 选择“迁移到具有不同处理器的物理计算机”,然后单击“确定”。

  8. 重启 VM。

使用 Hyper-V 管理器禁用处理器兼容模式

若要使用 Hyper-V 管理器为 VM 禁用处理器兼容模式,请执行以下操作:

  1. 关闭 VM。

  2. 单击“开始”,指向“管理工具”,然后单击“Hyper-V 管理器”

  3. 选择运行 Hyper-V 的服务器和所需的 VM。

  4. 如果 VM 正在运行,则必须关闭 VM 以禁用处理器兼容模式设置。

  5. 在“操作”窗格中,单击“设置”,然后单击“处理器”。

  6. 展开“处理器”,然后单击“兼容性”。

  7. 取消选中“迁移到具有不同处理器的物理计算机”复选框,然后单击“确定”。

  8. 重启 VM。

使用 PowerShell 启用处理器兼容性模式

若要使用 PowerShell 为 VM 启用处理器兼容模式,请关闭 VM 并运行 Set-VMProcessor cmdlet,将 CompatibilityForMigrationEnabled 设置为 $true:

get-vm -name <name of VM> -ComputerName <target cluster or host> | Set-VMProcessor -CompatibilityForMigrationEnabled $true

然后,重启 VM。

警告

你可能会看到 Set-VMProcessor 的其他参数,这些参数可以与 Azure Stack HCI 配合使用。 请勿尝试将它们与 Windows Server 配合使用,否则会收到错误消息。 默认的且仅适用于 Windows Server 的 CompatibilityForMigrationModeMinimumFeatureSet了解 Azure Stack HCI 中的动态 CPU 兼容模式

使用 PowerShell 禁用处理器兼容模式

若要使用 PowerShell 为 VM 禁用处理器兼容模式,请关闭 VM 并运行 Set-VMProcessor cmdlet,将 CompatibilityForMigrationEnabled 设置为 $false:

get-vm -name <name of VM> -ComputerName <target cluster or host> | Set-VMProcessor -CompatibilityForMigrationEnabled $false

然后,重启 VM。

后续步骤

另请参阅: