gpt4 book ai didi

linux - 使用 perf 监控原始事件计数器

转载 作者:IT王子 更新时间:2023-10-29 00:40:12 25 4
gpt4 key购买 nike

我正在尝试测量具有多个(物理)处理器的(英特尔至强)机器上的某些硬件事件。具体来说,我想知道为读取“offcore”数据发出了多少请求。

我找到了 the OFFCORE_REQUESTS英特尔文档中的硬件事件,它给出了事件描述符 0xB0 和数据需求,附加掩码 0x01。

然后告诉 perf 记录事件 0xB1(即 0xB0 | 0x01)并将其称为:

是否正确?
perf record -e r0B1 ./mytestapp someargs

或者这是不正确的?因为 perf report 没有显示像这样输入的事件的输出。

除了 tutorial entry 之外,这方面的 perf 文档相当稀疏。它没有说明它是哪个事件(虽然这个对我有用),或者它是如何编码的......

非常感谢任何帮助。

最佳答案

好吧,我想我明白了。

我用的Intel机器,格式如下: <umask><eventselector>其中两者都是十六进制值。可以删除 umask 的前导零,但不能删除事件选择器。

所以对于事件0xB0带着面具0x01我可以打电话:

perf record -e r1B0 ./mytestapp someargs

我无法在 perf 内核代码中找到它的确切解析(这里有内核黑客吗?),但我找到了这些来源:

  • the c't magazine 13/03 (subscription required) 中对原始事件使用 perf 的描述,其中描述了一些原始事件以及来自英特尔架构软件开发人员手册(第 3b 卷)的描述
  • kernel mailing list 上的补丁,讨论记录它的正确方法。它指定上面的模式是“...是特定于 x86 的并且当时不完整”
  • (已更新) 较新版本的手册页显示了 Intel 机器上的示例:man perf-list

更新:正如评论中所指出的(谢谢!),libpfm 转换器可用于获取正确的事件描述符。用户“osgx”发现的评论中链接的网站(Bojan Nikolic:如何监控所有 CPU 性能事件)对其进行了更详细的解释。

关于linux - 使用 perf 监控原始事件计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com