Linux内核:4.10.0-20-generic(也在4.11.3上试过)
Ubuntu:17.04
我一直试图使用收集内存访问的统计信息perf stat.我能够收集内存存储的统计信息,但内存加载的计数返回0值.
以下是内存存储的详细信息: -
perf stat -e cpu/mem-stores/u ./libquantum_base.arnab 100
N = 100, 37 qubits required
Random seed: 33
Measured 3277 (0.200012), fractional approximation is 1/5.
Odd denominator, trying to expand by 2.
Possible period is 10.
100 = 4 * 25
Performance counter stats for './libquantum_base.arnab 100':
158,115,510 cpu/mem-stores/u
0.559922797 seconds time elapsed
Run Code Online (Sandbox Code Playgroud)
对于内存加载,我得到0计数,如下所示: -
perf stat -e cpu/mem-loads/u ./libquantum_base.arnab 100
N = 100, 37 qubits required
Random seed: …Run Code Online (Sandbox Code Playgroud) 我试图在主机上使用 Intel-PT,而我在来宾计算机中运行通用软件程序。所以我期望在主机中运行的 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 是我从来宾复制到主机上的 kallsyms 和模块文件。
然后我将启动我的虚拟机。我将在客户机上运行一个程序。程序执行完成后,我将在主机中按Ctrl + C (SIGINT) 停止录制。
我看到,一旦我尝试使用 perf 报告读取使用以下命令生成的文件 -
./perf kvm report -i perf.data.kvm
它返回“未找到样本”。这意味着 Intel-PT 未能记录任何样本。
注意:MSR_IA32_VMX_MISC对于我的处理器,我发现 MSR 中值的第 14 位是 0。根据 Intel 文档,对于要在 VMX 操作中使用的 Intel-PT,该位应为 1。这是否会以任何方式影响 Intel-PT 不记录任何样本的原因?
INTEL-PT 即使在 VM 开启时也能工作吗?还是我记录数据的方法不对?
编辑:我使用的是Linux 内核 4.11.3,具有 Ubuntu 17.04和支持 Intel-PT 的 Broadwell CPU。