我对测量 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 的选项。有很多注意事项和限制。