如何在虚拟化环境中启用英特尔处理器跟踪(IPT)?

问题描述 投票:3回答:1

我正在尝试在虚拟机中运行Alex Ionescu的WinIPT interface,但没有成功。 (这是运行Windows 10 VM的Windows 10 Pro主机,两者均为18363更新)

我已经在主机上成功构建并运行了Intel的驱动程序以及Alex的工具链,并使用ptxed处理了跟踪。我还运行了英特尔的cpuid实用程序,并验证了INTEL_PROCESSOR_TRACE功能在主机上处于活动状态。但是,当我在VM中运行该实用程序时,它不显示INTEL_PROCESSOR_TRACE标志,并且确实,驱动程序返回错误,指出该功能未启用。

我已经尝试在几种不同的虚拟环境中运行相同的设置,包括最新版本的VirtualBox,VMWare Workstation和Hyper-V。

当我启用Hyper-V平台时,它会在主机上静默禁用INTEL_PROCESSOR_TRACE功能。

VMWare Workstation并没有直接禁用它,但是当我启动虚拟机后尝试在主机上再次运行跟踪工具时,它抛出了BSoD,因此我对此没有很高的期望。

VirtualBox至少没有取消任何功能,但是即使我启用了VT-x直通选项,它仍然没有设置启用IPT的标志。

据微软,理论上存在一个在Hyper-V中启用此功能的过程,尽管我遇到了上述问题,该问题最终在主机上被禁用:

Enabling performance monitoring components in a virtual machine

有人得到这个工作吗?我希望在当前环境(Windows主机上的Windows VM)上使用一种解决方案,但是希望对在Linux上使用perf或其他方法的任何见解表示赞赏。我还发现了2017年的一些帖子和问题,表明``尚''不支持IPT,但过去一年左右没有支持。技术和体系结构似乎仍在发展,所以我真的很想知道是否有人以任何形式取得了成功,以及对如何做或避免做任何见解。

其他资源:

英特尔处理器跟踪的背景:Processor Tracing

编辑添加(2/10/2020)

更仔细地查看Microsoft的说明,他们提到您需要“支持IPT和PT2GPA功能的Intel处理器”才能在虚拟机中启用IPT。 According to Intel,他们被列为支持PT2GPA的唯一体系结构是Ice Lake。

我当前正在使用的计算机正在运行早期的微体系结构(Coffee Lake),这可以解释我看到的IPT在主机上可以正常运行的行为。任何人都可以确认他们可以在更新的处理器上工作吗?

kernel intel trace virtualization intel-pmu
1个回答
1
投票

请参阅“英特尔64和IA-32架构软件开发人员手册”,从“第35章英特尔处理器跟踪”开始。 IPT CPU功能确实具有虚拟机管理程序类型1(硬件)支持,但似乎对其在VM中的运行方式有一些限制。

偶然地,我与VMWare代表谈了电话最初缺乏IPT支持的问题,他没有给出任何明确的答复,也从未通过电子邮件回复我。在该主题的VMWare论坛上,只有一两个论坛帖子。似乎有一些标志可以设置支持,但是没有一个对我有用。阅读,可能很快不会出现。

[在2020年,我们可能都在同一条船上。如果我们想在商用VM选项之一中获得支持,我们将不得不不断询问。也许,如果有足够的要求,他们会认为它是一项商业上可行的功能,可以添加。

和/或对于要完成任务的任何人,请在VirtualBox或其他开源解决方案之一中添加对此任务的支持。

编辑:显然至少对于Linux,KVM现在具有IPT支持。

© www.soinside.com 2019 - 2024. All rights reserved.