首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AMD perf事件

AMD perf事件
EN

Stack Overflow用户
提问于 2017-09-07 20:37:47
回答 1查看 2.2K关注 0票数 5

我正试图在我的设备上使用perf和一个AMD,但我真的找不到任何关于如何从AMD获得cache-misses的信息。我读到您需要编写-e rNNN,其中NNN是事件的十六进制代码,但我没有找到任何表或其他东西来查看这些代码。你能帮我解决这个问题吗,因为互联网上似乎根本没有任何信息!实际上,在perf的手册中有一些链接,但是它们是无效的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 17:24:13

检查perf list输出,在现代Linux内核版本中,它可能报告一些特定于体系结构的硬件事件。一些通用硬件事件可能总是由perf list报告(特别是旧内核),但并不是所有这些事件都映射到一些实际的硬件事件。cache-missescycles是这样的泛型perf事件,并不总是映射(映射是围绕着http://elixir.free-electrons.com/linux/latest/source/arch/x86/events/amd/core.chttp://elixir.free-electrons.com/linux/latest/source/arch/x86/events/amd/core.c源代码映射的-- cache-misses映射到[PERF_COUNT_HW_CACHE_MISSES] = 0x077e,)。

另外,用perf stat -e event1,cycles,instructions,cpu-clock尝试perf列表中的不同事件,其中event1是您想要检查的事件,并且有一些工作事件。

要对原始事件进行编码,可以更容易地使用处理器文档、perf源(用于精确的十六进制编码)和some external tools。对于英特尔,有来自ocperf.py站点的http://github.com/andikleen/pmu-tools;在http://github.com/andikleen/pmu-tools2/libpfm4 4中有一个通用的原始生成器,由Bojan Nikolic和showevtinfo util在http://www.bnikolic.co.uk/blog/hpc-prof-events.html上描述“如何监视所有的CPU性能事件”(这也是在FAQ:events/faq.html#q2e Q2e中获取perf的rXXXX代码的推荐方法。如何确定正确的“原始”事件值):

为了充分利用这些计数器,目前必须将它们指定为perf工具作为原始十六进制代码(-e rXXXX,其中XXXX是代码)。这就引出了两个明显的问题:

  • 要用什么密码?
  • 所有这些信息意味着什么?

我将在后面的文章中讨论其中的第二个,但现在我们来看看如何使用原始代码:

  1. 获取perfmon2/libpfm的最新版本(h/t这篇developerworks文章): git克隆git://perfmon2.git.sourceforge.net/gitroot/perfmon2/libpfm4;cd libpfm4;
  2. 运行showevtinfo程序(在examples子目录中)获取所有可用事件的列表,以及支持的掩码和修饰符(有关完整输出的示例,请参见下面的输出)
  3. 找出哪些事件,以及您想要使用的掩码和修饰符是什么。掩码以Umask作为前缀,并以十六进制数和方括号中的符号名表示。修饰符以Modif作为前缀,它们的名称也在方括号中。
  4. 使用check_events程序(也在示例子目录中)将eventumaskmodifiers转换为原始代码。您可以通过运行命令check_events <event name>:<umask>[(:modifers)*]来实现这一点,即提供事件名、umask和多个修饰符,所有这些修饰符都由冒号字符分隔。然后,该程序将打印出一个原始事件规范,例如: 代码: 0x531003
  5. 此十六进制代码可用作GNU/Linux perf工具的参数,例如向perf stat提供-e r531003选项。
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46104738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档