在 Hyper-V 虚拟机中启用 Intel 性能监视硬件

Intel 处理器包含统称为性能监视硬件的功能(如 PMU、PEBS、LBR)。 性能调试软件(如英特尔 VTune Amplifier)使用这些功能来分析软件性能。 在 Windows Server 2019 和 Windows 10 版本 1809 之前,当启用 Hyper-V 时,主机操作系统和 Hyper-V 来宾虚拟机都无法使用性能监视硬件。 从 Windows Server 2019 和 Windows 10 版本 1809 开始,主机操作系统默认可以访问性能监视硬件。 默认情况下,Hyper-V 来宾虚拟机没有访问权限,但 Hyper-V 管理员可以选择向一个或多个来宾虚拟机授予访问权限。 本文档介绍了向来宾虚拟机公开性能监视硬件所需的步骤。

要求

要在虚拟机中启用性能监视硬件,你需要:

  • 带有性能监视硬件(即 PMU、PEBS、LBR)的 Intel 处理器。 请参阅 Intel 的这篇文档,以确定你的系统支持哪种性能监视硬件。
  • Windows Server 2019 或 Windows 10 版本 1809(2018 年 10 月更新)或更高版本
  • 没有嵌套虚拟化的 Hyper-V 虚拟机,也处于停止状态

要在虚拟机中启用即将推出的 Intel 处理器跟踪 (IPT) 性能监视硬件,你需要:

  • 支持 IPT 和 PT2GPA 功能的 Intel 处理器。 [^1] 请参阅 Intel 的这篇文档,以确定你的系统支持哪种性能监视硬件。
  • Windows Server 版本 1903 (SAC) 或 Windows 10 版本 1903(2019 年 5 月更新)或更高版本
  • 没有嵌套虚拟化的 Hyper-V 虚拟机,也处于停止状态
  • 需要使用下面的命令通过命令行启用 PMU。

[^1]:PT2GPA 是指“Intel PT 使用来宾物理地址”位。 英特尔 SDM 的 25.5.4.1 中对此进行了说明。

在虚拟机中启用性能监视组件

要为特定来宾虚拟机启用不同的性能监视组件,请在以管理员身份运行时使用 Set-VMProcessor PowerShell cmdlet:

注意

虚拟机版本必须为 9.1 或更高版本。 如果也向来宾提供嵌套虚拟化,则需要 9.3 及更高版本。

# Enable IPT
Set-VMProcessor MyVMName -Perfmon @("ipt", "pmu")
# Enable all components
Set-VMProcessor MyVMName -Perfmon @("ipt", "pmu", "lbr", "pebs")
# Disable all components
Set-VMProcessor MyVMName -Perfmon @()

注意

启用性能监视组件时,如果指定了 "pebs",则还必须指定 "pmu"
只有 PMU 版本不低于 4 的硬件才支持 PEBS。
此外,任何尝试启用 "ipt" 的命令还必须指定 "pmu"

启用主机的物理处理器不支持的组件将导致虚拟机启动失败。

启用性能监视硬件对保存/恢复、导出和实时迁移的影响

Microsoft 不建议在具有不同 Intel 硬件的系统之间使用性能监视硬件实时迁移或保存/还原虚拟机。 性能监视硬件的特定行为通常是非体系结构的,并且在 Intel 硬件系统之间会发生变化。 在不同系统之间移动正在运行的虚拟机可能会导致非体系结构计数器出现不可预测的行为。