【问题标题】:AMD perf eventsAMD 性能事件
【发布时间】:2018-02-16 16:29:32
【问题描述】:

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

【问题讨论】:

    标签: x86 perf amd-processor


    【解决方案1】:

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

    还可以使用 perf stat -e event1,cycles,instructions,cpu-clock 尝试从 perf 列表中的不同事件,其中 event1 是您要检查的事件,并且有一些有效的事件。

    要对原始事件进行编码,可以更轻松地使用处理器文档、性能源(用于精确的十六进制编码)和some external tools。对于英特尔,有来自http://github.com/andikleen/pmu-tools 站点的ocperf.py;并且在 perfmon2/libpfm4 中有通用原始生成器,在 http://www.bnikolic.co.uk/blog/hpc-prof-events.html“如何监控所有 CPU 性能事件”中由 Bojan Nikolic 和 showevtinfo util 进行了描述(在常见问题解答中也推荐了获取 perf rXXXX 代码的方法:http://web.eece.maine.edu/~vweaver/projects/perf_events/faq.html#q2e Q2e。如何确定正确的“原始”事件值):

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

    • 使用什么代码?
    • 所有这些信息是什么意思?

    我将在后面的文章中介绍其中的第二个,但这里暂时介绍如何找出要使用的原始代码:

    1. 获取最新版本的perfmon2/libpfm(h/t 这篇 developerworks 文章):

      git clone git://perfmon2.git.sourceforge.net/gitroot/perfmon2/libpfm4; 光盘 libpfm4; 制作

    2. 运行showevtinfo 程序(在examples 子目录中)以获取所有可用事件的列表,以及支持的掩码和修饰符(有关完整输出的示例,请参见下面的输出)

    3. 找出您想要使用哪些事件以及哪些带有掩码和修饰符的内容。掩码以Umask 为前缀,并以十六进制数字和方括号中的符号名称给出。修饰符以Modif 为前缀,它们的名称也在方括号中。

    4. 使用check_events 程序(也在示例子目录中)将eventumaskmodifiers 转换为原始代码。您可以通过运行以下命令来执行此操作: check_events <event name>:<umask>[(:modifers)*] 即,您提供事件名称、umask 和多个修饰符,所有这些修饰符都由冒号字符分隔。然后程序将打印出原始事件规范,例如:

      代码:0x531003

    5. 此十六进制代码可用作 GNU/Linux perf 工具的参数,例如通过提供 -e r531003 选项将其用作 perf stat

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 2020-03-23
      • 2012-02-16
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多