You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Intel SPR架构下perf中LLC事件ID重复的区分方法问询

问题背景
  • 使用环境:Intel Sapphire Rapids(SPR)架构,内核版本5.14,perf版本4.18
  • 遇到的问题:
    1. 分析LLC相关事件含义时,发现所有事件ID均相同:
      [ C(LL  ) ] = {
        [ C(OP_READ) ] = {
          [ C(RESULT_ACCESS) ] = 0x12a,
          [ C(RESULT_MISS)   ] = 0x12a,
        },
        [ C(OP_WRITE) ] = {
          [ C(RESULT_ACCESS) ] = 0x12a,
          [ C(RESULT_MISS)   ] = 0x12a,
        },
      },
      
    2. 查看Intel perfmon的SPR事件定义时,发现大量事件共享相同的EventCode和UMask,仅通过MSRValue区分,例如:
      {
        "EventCode": "0x2A,0x2B",
        "UMask": "0x01",
        "EventName": "OCR.DEMAND_DATA_RD.ANY_RESPONSE",
        "BriefDescription": "统计有任何响应的按需数据读取次数。",
        "MSRIndex": "0x1a6,0x1a7",
        "MSRValue": "0x10001",
        "Offcore": "1"
      },
      {
        "EventCode": "0x2A,0x2B",
        "UMask": "0x01",
        "EventName": "OCR.DEMAND_RFO.ANY_RESPONSE",
        "BriefDescription": "统计有任何响应的所有权读取(RFO)请求和独占所有权软件预取(PREFETCHW)次数。",
        "MSRIndex": "0x1a6,0x1a7",
        "MSRValue": "0x3F3FFC0002",
        "Offcore": "1"
      }
      
  • 疑问:如何区分perfmon中的条目与perf里每个LLC相关事件的对应关系?
解决方法

要区分这类共享EventCode/UMask、靠MSRValue区分的事件,核心是理解Offcore Response事件的工作机制——这类LLC相关事件属于Offcore事件,需要通过配置MSR(0x1A6/0x1A7)来筛选特定的内存访问类型,具体步骤如下:

  1. 解析perf事件ID的构成
    perf里的0x12a是EventCode | (UMask << 8)的计算结果:0x2A是EventCode,0x1是UMask(0x1 << 8 = 0x100,0x100 + 0x2A = 0x12A),对应perfmon中EventCode=0x2A,0x2B且UMask=0x01的条目,这些都是Offcore Response事件。

  2. 按语义匹配事件与MSRValue
    perf里的LLC事件(读访问/读缺失、写访问/写缺失)对应perfmon中不同的MSRValue配置,因为MSRValue是用来指定要计数的内存请求类型和结果的:

    • 对于LLC OP_READ RESULT_ACCESS:找perfmon中描述为“统计LLC读访问”的条目,其MSRValue会配置为筛选读请求且访问成功的规则
    • 对于LLC OP_READ RESULT_MISS:找描述为“统计LLC读缺失”的条目,MSRValue会筛选读请求且未命中LLC的规则
    • 写操作的对应事件以此类推,重点看BriefDescription或PublicDescription中的语义匹配
  3. 验证事件配置的一致性
    可以通过perf list命令查看LLC事件的详细定义,或者用perf stat -e <事件名称>运行测试,对比perfmon中对应MSRValue的事件描述,确认计数逻辑是否一致。另外,也可以查看内核源码中SPR架构的perf事件定义文件(如arch/x86/events/intel/spr.c),里面会明确每个LLC事件对应的MSR配置。

  4. 注意版本兼容性问题
    你的perf版本4.18远低于内核版本5.14,可能存在事件定义不匹配的问题——旧版本perf可能未完整支持SPR的Offcore事件,导致所有LLC事件复用同一个ID。建议升级perf到与内核版本接近的版本,以获得更准确的事件映射。

内容的提问来源于stack exchange,提问作者Frontier_Setter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:14:59