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

能否用Intel PEBS同时采样LOAD和STORE?如何配置attr->config?

解决Intel PMU PEBS同时采样LOAD和STORE的配置问题

要同时采样所有LOAD和STORE操作,你可以基于现有LOAD/STORE的配置,通过合并单位掩码(UMASK)来实现,具体配置如下:

核心配置值

新增LOAD_AND_STORE分支时,将attr->config设置为0x5383d0。

代码修改示例

在你的switch分支中新增case:

switch(aType)
{
    case LOAD:
    {
        attr->config = 0x5381d0; // All Load
        attr->precise_ip = 3;
        load_flag = true;
        break;
    }
    case STORE:
    {
        attr->config = 0x5382d0; // All Store
        attr->precise_ip = 3;
        store_flag = true;
        break;
    }
    case LOAD_AND_STORE: // 新增分支
    {
        attr->config = 0x5383d0; // 同时采样LOAD和STORE
        attr->precise_ip = 3;
        load_flag = true;
        store_flag = true;
        break;
    }
    default:
        // 保留原有默认逻辑
        attr->config = 0x5382d0;
        attr->precise_ip = 3;
        store_flag = true;
        break;
}

配置原理

Intel PMU的config字段由三部分组成:

  • 低8位:事件选择码(EVENT_SEL),这里0xd0对应mem_inst_retired事件(监控已退休的内存指令)
  • 中间8位:单位掩码(UMASK),用于筛选事件子类型:
    • 0x81:匹配所有LOAD操作
    • 0x82:匹配所有STORE操作
    • 0x83:0x81 | 0x82,同时匹配LOAD和STORE操作
  • 高16位:0x53,包含PEBS启用、采样模式等必要标志(和原有LOAD/STORE配置一致,确保PEBS高精度采样生效)

验证建议

如果需要确认配置是否适配你的CPU架构(比如Broadwell之外的型号),可以通过perf工具辅助验证:

  1. 执行perf list mem_inst_retired查看支持的子事件
  2. 执行perf stat -e mem_inst_retired.all -vvv ./your_app,输出中会显示对应事件的编码,确认和0x5383d0匹配

内容的提问来源于stack exchange,提问作者Azad Md Abul Kalam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:55:51