动态处理器兼容模式

适用于:Azure 本地版本 22H2

动态处理器兼容性模式已更新,以利用群集环境中的新处理器功能。 处理器兼容性通过确定群集中每个节点支持的处理器功能,并计算所有处理器的公分母来发挥作用。 虚拟机 (VM) 配置为使用群集中所有服务器可用的最大数量的功能。 与默认使用最少的固定处理器功能集的前一处理器兼容性版本相比,这提高了性能。

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

处理器兼容性模式允许移动实时 VM(实时迁移)或移动在不同进程功能集的节点之间保存的 VM。 但是,即使启用了处理器兼容性,你也无法在其处理器制造商不相同的主机之间移动 VM。 例如,无法将正在运行的 VM 或处于已保存状态的 VM,从搭载 Intel 处理器的主机移到搭载 AMD 处理器的主机。 如果必须以这种方式移动 VM,请先关闭 VM,然后在新主机上重启它。

重要

只有使用最新配置版本 (10.0) 的 Hyper-V VM 才能受益于动态配置。 具有较旧版本的 VM 不会受益于动态配置,并且不会继续使用 以前版本的固定处理器功能

我们建议为 Azure Stack HCI 上运行的 VM 启用处理器兼容性模式。 这提供了最高级别的功能,当它需要迁移到新硬件时,移动 VM 不需要停机。

注意

如果你打算停止 VM 并将其重启,则无需使用处理器兼容性模式。 每当重启 VM 时,来宾操作系统将枚举新主计算机上可用的处理器兼容性。

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

处理器制造商经常在其处理器中引入优化和功能。 这些功能通常会将专用硬件用于特定任务来提高性能或安全性。 例如,许多媒体应用程序使用处理器功能来加速矢量计算。 应用程序很少需要这些功能才能运行;它们可提升性能。

处理器上提供的功能集因其品牌、型号和面市时间而异。 操作系统和应用程序软件通常在首次启动时枚举系统的处理器功能集。 软件预计可用处理器功能在其生存期内不会发生更改,这在物理计算机上运行时永远不会发生,因为处理器功能是静态的,除非处理器升级。

但是,可以通过 VM 移动功能将正在运行的 VM 迁移到新的虚拟化主机。 如果 VM 中的软件检测到并开始使用特定的处理器功能,然后将 VM 移动到没有该功能的新虚拟化主机,则软件可能会失败。 这可能导致应用程序或 VM 崩溃。

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

处理器兼容性模式的新增功能

过去,所有新的处理器指令集都处于隐藏状态,这意味着来宾操作系统和应用程序软件无法使用处理器指令集增强功能来帮助应用程序和 VM 保持高性能。

为了克服这种限制,处理器兼容性模式现在为能够进行二级地址转换(SLAT)的处理器提供增强的动态功能。 此新功能将计算群集中的节点所支持的 CPU 功能的公分母,并更新 VM 上的现有处理器兼容性模式,以使用此动态计算的功能集,而不是旧的硬编码功能集。

新的处理器兼容性模式可确保跨虚拟化主机的 VM 可用的处理器功能集通过跨群集中的所有服务器提供通用功能集。 每个 VM 将接收在群集中的所有服务器上提供的最大数量的处理器指令集。 此过程是自动进行的,并始终在整个群集中启用并复制,因此无法通过任何命令来启用或禁用该过程。

使用处理器兼容模式

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

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

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

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

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

注意

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

在群集之间迁移正在运行的 VM

假设每个群集中的所有服务器都运行相同的硬件,可以实时迁移群集之间正在运行的 VM。 有三个常见方案。

  • 将 VM 从具有新处理器的群集实时迁移到具有相同处理器的群集。 VM 功能将传输到目标群集。 此方案不需要启用处理器兼容性模式;但是,将其启用不会造成任何问题。

  • 将 VM 从具有较旧处理器的群集实时迁移到具有较新处理器的群集。 VM 功能将传输到目标群集。 在此方案中,如果 VM 重新启动,则会接收目标群集的最新计算功能。

  • 将 VM 从具有较新处理器的群集实时迁移到具有较旧处理器的群集。 需要在 PowerShell 中将 VM 处理器设置为对 CompatibilityForMigrationMode 参数使用 MinimumFeatureSet,或者在 Windows Admin Center 中的“虚拟机”>“设置”>“处理器”下选择“在 CPU 制造商相同的其他主机之间兼容”。 此设置将 VM 分配到服务器上提供的最小处理器功能。 在将兼容性移动到 跨群集(建议) 兼容且 VM 重启后,它将接收目标群集的最新计算功能。

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

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

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

如果担心处理器兼容性模式的性能影响,最好将 VM 工作负荷性能与启用的处理器兼容性模式进行比较并禁用。

将 VM 配置为使用处理器兼容性模式

本部分介绍如何将 VM 配置为使用处理器兼容性模式。 可以在同一群集中运行使用和不使用兼容性模式的 VM。

重要

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

使用 Windows Admin Center 启用处理器兼容性模式

若要使用 Windows Admin Center 启用处理器兼容性模式,请执行以下操作:

  1. 连接到群集,然后在“工具”窗格中选择“虚拟机” 。

  2. 在“库存”下,选择要在其上启用处理器兼容性模式的 VM,展开“电源”菜单,然后选择“关闭” 。

  3. 依次选择“设置”、“处理器”,然后选中“处理器兼容性”对应的框 。

用于启用处理器兼容性的复选框的屏幕截图。

  1. 若要将 VM 的 CPU 功能设置为群集中所有服务器支持的最大级别,请选择“在整个群集中兼容(建议)”。 这会最大限度地提高 VM 性能,同时保留将正在运行的 VM 移到群集中的其他服务器的功能。 建议为 Azure Stack HCI 21H2 群集上运行的所有 VM 启用此功能。 如果禁用,则必须重启 VM,以移动到具有不同级别的受支持 CPU 指令的主机,这与不同代 CPU 很常见。

    或者,若要将 VM 的 CPU 功能设置为最低以确保可将正在运行的 VM 移到群集外部的其他 Hyper-V 主机(前提是它们的 CPU 制造商相同),请选择“在 CPU 制造商相同的其他主机之间兼容”。

    注意

    与动态处理器兼容性模式一样,“在整个群集中兼容”仅适用于 Azure Stack HCI 21H2,不受任何其他操作系统的支持。

  2. 选择“保存处理器设置”并重启 VM。

本部分介绍如何使用 Hyper-V 管理器或 PowerShell 将 VM 配置为使用处理器兼容性模式。 可以在同一群集中运行使用和不使用兼容性模式的 VM。

重要

必须先关闭 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 启用处理器兼容性模式

若要启用处理器兼容性模式,请运行以下 cmdlet:

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

我们建议将 VM 的 CPU 功能设置为群集中所有服务器支持的最大级别。 这会最大限度地提高 VM 性能,同时保留将正在运行的 VM 移到群集中的其他服务器的功能。

若要使 VM 能够使用群集节点通用功能,请运行以下 cmdlet:

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

也可将 VM 的 CPU 功能设置为最小值,确保可以将正在运行的 VM 移到群集外的其他 Hyper-V 主机(如果它们的 CPU 制造商相同)。

若要使 VM 能够使用默认至少需要的功能跨群集进行迁移,请运行以下 cmdlet:

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

使用 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。