我试图在虚拟机中运行 Alex Ionescu 的WinIPT 界面,但没有成功。(这是运行 Windows 10 VM 的 Windows 10 Pro 主机,两者都是 18363 更新)
我已经在主机上成功构建并运行了 Intel 的驱动程序以及 Alex 的工具链,并使用 ptxed 处理了跟踪。我还运行了 Intel 的cpuid实用程序,并验证了主机上的 INTEL_PROCESSOR_TRACE 功能是否处于活动状态。但是,当我在 VM 中运行该实用程序时,它不会显示 INTEL_PROCESSOR_TRACE 标志,实际上,驱动程序会返回一个错误,表明该功能未启用。
我尝试在几个不同的虚拟环境中运行相同的设置,包括最新版本的 VirtualBox、VMWare Workstation 和 Hyper-V。
当我启用 Hyper-V 平台时,它会静默禁用主机上的 INTEL_PROCESSOR_TRACE 功能。
VMWare Workstation 没有直接禁用它,但是当我在启动 VM 后尝试在主机上再次运行我的跟踪工具时,它抛出了一个 BSoD,所以我对此并不抱太大希望。
VirtualBox 至少没有带走任何功能,但即使我启用了 VT-x 直通选项,它仍然没有设置启用 IPT 的标志。
根据微软的说法,理论上存在一个在 Hyper-V 中启用此功能的过程,尽管我遇到了上述问题,它最终在我的主机上被禁用:
有没有人让这个工作?我更喜欢我当前环境中的解决方案(Windows 主机上的 Windows VM),但我很感激在 Linux 上使用 perf 或任何其他方法的任何见解。我还发现了 2017 年的一些帖子和问题,表明 IPT “尚未”得到支持,但在过去一年左右没有任何支持。技术和架构似乎仍在不断发展,所以我真的很想知道是否有人以任何形式取得了成功,以及关于该做什么或避免做什么的任何见解。
其他资源:
英特尔处理器跟踪的背景: 处理器跟踪
编辑添加(2/10/2020)
更仔细地查看 Microsoft 说明,他们提到您需要“支持 IPT 和 PT2GPA 功能的 Intel 处理器”才能在虚拟机中启用 IPT。 据英特尔称,他们列出的唯一支持 PT2GPA 的架构是 Ice Lake。
我目前正在使用的计算机正在运行早期的微架构(Coffee Lake),这可以解释我在主机上看到 IPT 正常的行为。任何人都可以确认他们可以在更新的处理器上使用它吗?