1

我尝试perf为 Intel Xeon E5 系列使用性能计数器 (linux)。

我对缓存未命中的解释感到困惑。虽然 L1 和 LLC 值很容易访问,但必须通过 -rNNN 事件从寄存器中读取 L2 的信息。但是在文档中,我还没有找到如何将事件编号与掩码字段组合以给出 NNN 值。中只有一个示例perf help显示了值 A8 和掩码 01,结果为 1a8。但是掩蔽时的一般规则是什么?它不应该写在文档中还是标准的 OR 函数之类的?

此外,我还没有从文档或其他相关主题的回复中了解,在 Xeon 案例中测量的 LLC 值是针对 L3 还是 L2。当硬件中有第三级缓存时会发生什么?LLC 是否仍然测量最后一级,即 L3 事件?

有没有人清除它?

4

2 回答 2

1

也许您可以查看内核并找出 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 之后,您可以知道它们的确切含义

于 2013-11-22T23:07:59.893 回答
0

“LLC”代表最后一级缓存。大多数现代英特尔系统都有 3 级缓存,因此在您的处理器上,LLC 是 L3 缓存。

于 2013-12-21T00:16:45.627 回答