我试图在虚拟机上运行Alex Ionescu的WinIPT interface,但没有成功。 (这是运行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的标志。
根据Microsoft的说法,理论上存在一个在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正常的情况下看到的行为。任何人都可以确认他们在更新的处理器上工作吗?
最佳答案
查看“英特尔64和IA-32架构软件开发人员手册”,从“第35章英特尔处理器跟踪”开始。 IPT CPU功能确实具有虚拟机管理程序类型1(硬件)支持,但似乎对其在VM中的运行方式有一些限制。
顺便说一句,我最初与VMWare代表讨论了电话上缺乏IPT支持的问题,他没有给出任何明确的答复,也从未通过电子邮件回复我。
在VMWare论坛上,关于该主题只有一两个论坛帖子。似乎有一些标志可以设置支持,但是没有一个对我有用。
阅读,可能很快不会出现。
在2020年,我们可能都在同一条船上。
如果我们想在商用VM选项之一中获得支持,我们将不得不不断询问。也许,如果有足够的要求,他们会看到它是一项商业上可行的功能。
和/或对于完成任务的任何人,请在VirtualBox或其他开源解决方案之一中添加对此项的支持。
编辑:显然至少对于Linux,KVM现在具有IPT支持。