当我运行时,perf list
我看到一堆Hardware Cache Events,如下所示:
$ perf list | grep 'cache event'
L1-dcache-load-misses [Hardware cache event]
L1-dcache-loads [Hardware cache event]
L1-dcache-stores [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
LLC-load-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-store-misses [Hardware cache event]
LLC-stores [Hardware cache event]
branch-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-loads [Hardware cache event]
dTLB-store-misses [Hardware cache event]
dTLB-stores [Hardware cache event]
iTLB-load-misses [Hardware cache event]
iTLB-loads [Hardware cache event]
node-load-misses [Hardware cache event]
node-loads [Hardware cache event]
node-store-misses [Hardware cache event]
node-stores [Hardware cache event]
这些事件似乎大多根据测试返回合理的值,但我想知道如何确定将这些事件映射到我系统上的硬件性能计数器事件?
也就是说,这些事件肯定是使用我的 Skylake CPU 上的一个或多个底层 x86 PMU 计数器来实现的——但是我怎么知道哪些呢?
您可以查看/sys/devices/cpu/events
其他硬件事件,但不能查看“硬件缓存事件”。