perf 无法获取 VMware ESX 上 Linux VM 的缓存未命中

perf 无法获取 VMware ESX 上 Linux VM 的缓存未命中

我对测量 CPU 缓存未命中参数很感兴趣,并偶然发现了这个名为 perf 的工具。我按照 wiki 操作,并能够在物理机上运行此命令时获取缓存未命中情况

[root@supermicro ~]# perf stat -e cache-misses dd if=/dev/zero of=/dev/null count=1000000          1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 0.539799 s, 949 MB/s

Performance counter stats for 'dd if=/dev/zero of=/dev/null count=1000000':

            55,435 cache-misses

       0.540932058 seconds time elapsed

在 VMware ESX 机器上的 Linux VM 上运行时,我得到了 0 次缓存未命中

[root@cw-centos62 fioFiles]# perf stat -e cache-misses dd if=/dev/zero of=/dev/null count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 0.593885 s, 862 MB/s

 Performance counter stats for 'dd if=/dev/zero of=/dev/null count=1000000':

                 0 cache-misses

       0.595547968 seconds time elapsed

这是正常的吗?如果是,还有其他方法可以获取 VMware ESX 上的 Linux VM 的缓存未命中信息吗?

连续波

答案1

此计数器和一些其他计数器在 VMWare 虚拟机中不可用。

参考:使用硬件性能监控计数器的性能应用程序无法正确显示信息 (2015931)

然而,一些最新的 VMWare 产品确实有启用 HW PMC 的选项。有很多注意事项和限制。

使用虚拟 CPU 性能监控计数器 (2030221)

相关内容