【问题标题】:Event-based sampling with the perf userland tool and PEBS使用 perf userland 工具和 PEBS 进行基于事件的采样
【发布时间】:2012-07-11 12:22:16
【问题描述】:

我正在使用 perf 用户空间工具进行基于事件的采样:目的是试图找出某些影响性能的事件(如分支未命中和缓存未命中)在我正在处理的更大系统上发生的位置。

现在,像

perf record -a -e branch-misses:pp -- sleep 5

完美运行:'pp' 修饰符触发的 PEBS 计数模式在收集样本中的 IP 时非常准确。

不幸的是,当我尝试对缓存未命中执行相同操作时,即

perf record -a -e cache-misses:pp -- sleep 5 # [1]

我明白了

错误:sys_perf_event_open() 系统调用返回 22(无效参数)。 /bin/dmesg 可能会提供其他信息。

致命:未配置 CONFIG_PERF_EVENTS=y 内核支持?

dmesg | grep "perf\|pmu" 没有显示任何有用的 AFAICT。我也很确定内核是用 CONFIG_PERF_EVENTS=y 编译的,因为 [1] 和

perf record -a -e cache-misses -- sleep 5 # [2]

工作:[2] 的问题是收集的样本不是很准确,这会伤害我的个人资料。

关于这里可能发生什么的任何提示?

【问题讨论】:

    标签: linux-kernel profiling kernel-module perf


    【解决方案1】:

    事实证明,通用cache-misses 映射到的特定事件不支持 PEBS。另一种方法是使用PEBS支持的事件之一(请参阅Nehalem 架构here 的列表)和适当的掩码来缩小范围。具体来说,可以使用 MEM_LOAD_RETIRED:LLC_MISS,即使事件似乎并非在所有情况下都是准确的。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2015-01-10
    • 2017-10-28
    • 2020-10-28
    • 2022-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多