我尝试将性能计数器(linux perf
)用于Intel Xeon E5系列。
我对缓存未命中的解释感到困惑。虽然可以轻松访问L1和LLC值,但必须通过-rNNN事件从寄存器中读取L2的信息。但是在文档中我还没有找到如何将带有掩码字段的事件编号组合起来给出NNN值。 perf help
中只有一个示例显示值A8,掩码为01,结果为1a8。但掩蔽时的一般规则是什么?它不应该写在文档中,或者它是标准OR函数还是什么?
此外,我还没有从文档或其他相关主题的回复中了解,在Xeon案例中测量的LLC值是针对L3还是L2。当硬件中有第三级缓存时会发生什么? LLC是否仍然测量最后一级,即L3事件?
有人清除了吗?
答案 0 :(得分:1)
“LLC”代表最后一级缓存。大多数现代英特尔系统都有3级缓存,因此在您的处理器上,LLC是L3缓存。
答案 1 :(得分:0)
您可以查看内核并找出Xeon的事件编号。
以下是我为arm v7 A8发现的内容
拱/臂/内核/ perf_event_v7.c:168
[C(LL)] = {
[C(OP_READ)] = {
[C(RESULT_ACCESS)] = ARMV7_A8_PERFCTR_L2_CACHE_ACCESS,
[C(RESULT_MISS)] = ARMV7_A8_PERFCTR_L2_CACHE_REFILL,
},
和arch / arm / kernel / perf_event_v7.c:75
ARMV7_A8_PERFCTR_L2_CACHE_ACCESS = 0x43,
ARMV7_A8_PERFCTR_L2_CACHE_REFILL = 0x44,
因此,在查看ARM TRM中的事件编号0x43和0x44后,您可以知道它们究竟是什么意思