gpt4 book ai didi

linux - KVM-QEMU 开启时,Intel-PT 不记录任何数据包

转载 作者:太空狗 更新时间:2023-10-29 11:41:32 24 4
gpt4 key购买 nike

我试图在主机上使用 Intel-PT,同时在 guest 计算机上运行通用软件程序。所以我期望在主机中运行的 Intel-PT 将记录所有相关数据包(如 PIP、FUP、TSC 等)以及所有基于 VM 的数据包,如 VMCS。

我使用下面的命令-

./perf kvm --host --guest --guestkallsyms=guest-kallsyms --guestmodules=guest-modules record -e intel_pt//

guest-kallsyms 和 guest-modules 是我从 guest 复制到主机上的 kallsyms 和模块文件。

然后我将启动我的虚拟机。我将在客户机上运行一个程序。程序执行完成后,我将在主机中按 Ctrl + C (SIGINT) 停止录制。

我看到,一旦我尝试使用 perf report 来读取使用以下命令生成的文件 -

./perf kvm report -i perf.data.kvm

它返回“未找到样本”。这意味着 Intel-PT 未能记录任何样本。

注意:我发现对于我的处理器,MSR MSR_IA32_VMX_MISC 中值的第 14 位是 0。根据 Intel 文档,对于要在 VMX 操作中使用的 Intel-PT,此位应​​为 1。这是否会以任何方式影响 Intel-PT 不记录任何样本的原因?

INTEL-PT 即使在 VM 开启时也能工作吗?还是我记录数据的方法不对?

编辑:我正在使用 Linux 内核 4.11.3,具有 Ubuntu 17.04 和支持 Intel-PT 的 Broadwell CPU。

最佳答案

既然我现在清楚地知道为什么 Intel-PT 不能与 QEMU-KVM 一起工作,我会发布一个答案。

正如我在问题中提到的,这不起作用的主要原因是 MSR MSR_IA32_VMX_MISC 中值的第 14 位对于我的处理器是 0。根据 Intel 文档,要在 VMX root 操作(在 VMXONVMXOFF 之间)中使用 Intel-PT,该位应为 1。

主要问题是,当上述位为0时,VMXON指令会将IA32_RTIT_CTL MSR的TraceEn组件设置为0。该组件控制跟踪操作,如果重置,则不会将跟踪数据写入缓冲区。此重置在硬件级别进行控制。

要执行此事件,至少需要一个 Skylake 处理器。我使用的是 Broadwell 系统,但现在看来,它无法正常工作。

关于linux - KVM-QEMU 开启时,Intel-PT 不记录任何数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44982315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com