CPU/内存监视器
因为最近要做实验实时监测CPU还有内存的性能,找了非常久才找到符合我要求的工具,特此记录。
perf
这个应该是应用最为广泛的Linux内核下的性能监测器,测的内容很多,官方文档也很详实,但是其生成的数据比较难以使用。
一般Linux内核都会内置,不用安装。
通过perf list获取可用指令。
使用方法:
perf stat -e L1-dcache-loads <command>
同时支持C++及可视化FlameGraph。
Processor Counter Monitor (PCM)
Intel家的东西,但是现在似乎已经不作为Intel管辖的软件,只是在Github上偶尔还有更新。 PCM自称操作比perf的操作更加底层,所以能获得更精确的性能监测*。
虽然几乎没有文档,但是实际上操作非常简易,且能够完全满足我的需求。
操作方法如下
git clone一下- Linux环境直接
make - 编译完后在项目根目录会产生几个
.x后缀的文件,这几个就是可执行文件了 - 运行
--help即可获得命令行指令说明
比较常用的几个设施(都可以在它们Github首页上找到):
- pcm:CPU、cache
- pcm-memory:内存带宽(每频道及每个DRAM DIMM槽)
- pcm-latency:L1 cahce
- pcm-pcie:PCIe
- pcm-numa:NUMA架构
- pcm-power:能耗
使用实例:0.1秒监测一次,结果输出为test.csv文件
sudo ./pcm.x 0.1 -csv=test.csv --external-program Test
可能遇到的问题
- 没有权限:注意每句指令都要加
sudo以及见Intel PCM in userspace LinuxTry to execute 'modprobe msr' as root user and then you also must have read and write permissions for /dev/cpu/*/msr devices (/dev/msr* for Android). The 'chown' command can help. Access to Intel(r) Performance Counter Monitor has denied (no MSR or PCI CFG space access). - API文档
VTune
这个也是Intel家的东西,有GUI,比较麻烦就是还要安装,并且对输出数据似乎也不是很友好。