【问题标题】:performance counters for cache events on Intel XeonIntel Xeon 上缓存事件的性能计数器
【发布时间】:2013-12-06 03:53:15
【问题描述】:

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

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

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

有人清理过吗?

【问题讨论】:

  • 使用 the ocperf.py wrapper for perf 获取 uarch 特定事件的符号名称,例如 Skylake 上的 mem_load_retired.l2_hitl2_lines_in.alll2_rqsts.all_demand_data_rd(按需加载到 L2)。

标签: intel cpu-cache perf


【解决方案1】:

也许您可以查看内核并找出 Xeon 的事件编号。

这是我为 arm v7 A8 找到的内容

arch/arm/kernel/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 之后,您可以知道它们的确切含义

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 2021-12-18
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 2019-02-09
      • 2013-10-08
      相关资源
      最近更新 更多