【问题标题】:what's the difference between perf command and perfmon2 or libpfm4perf 命令和 perfmon2 或 libpfm4 有什么区别
【发布时间】:2012-09-22 22:28:25
【问题描述】:

最近我正在挖掘性能计数器周围的东西。我搜索了 perfmon2 和 libpfm4 http://perfmon2.sourceforge.net/,还找到了 perf 命令 https://perf.wiki.kernel.org/index.php/Main_Page,并附带了 linux 的内核源代码。 the perf source code linklibpfm4和perf命令我都玩过,libpfm4好像只能提供cpu的周期数或者指令数。

我找不到任何示例代码或可运行示例来说明如何检索 L1-dcache-loads 之类的信息,这些信息似乎可以通过使用 perf 获得,我在 stackoverflow 上查找了它并找到了讨论 perf 命令和 libpfm4 之间关系的文章: Using Hardware Performance Counters in Linux 人们说 libpfm4 的作者对 perf 命令的贡献者之一 Ingo 很生气,但后来他实际上帮助审查了 perf 的代码。

那么有人可以用 perf 命令解释 perfmon2 或 libpfm4 之间的关系吗?我可以像使用 perf 命令一样使用 libpfm4 检索 L1-dcache 之类的信息吗?非常感谢!

【问题讨论】:

    标签: linux-kernel perfmon perf


    【解决方案1】:

    perf 命令提供了要测量的常见性能计数器事件的子集,例如处理器时钟周期、指令计数和缓存事件指标。但是,大多数处理器提供许多其他实现特定的硬件事件,例如浮点操作和微体系结构事件(例如由于硬件资源限制而导致的停顿)。要访问那些特定于实现的事件,需要使用 perf (http://lxr.linux.no/#linux+v3.6/tools/perf/Documentation/perf-record.txt#L33) 中的原始事件,它可以乏味。 libpfm4 提供了一种映射机制来按名称引用那些特定于实现的硬件事件。 papi 使用 libpfm。你可以看看 papi 如何使用 libpfm 来访问那些特定于实现的事件 (http://icl.cs.utk.edu/projects/papi/)

    【讨论】:

    • 有一个网页link给出了perfmon内核接口的概述。但它说 papi 基于 PerfCtr 接口,这些接口都不是官方内核源代码树的一部分。所以我没有深究。刚看了papi主页,好像papi进步了很多。但是 perf 命令在官方内核源码树下,它确实提供了强大的功能。在探索了它的源代码之后,提取特定功能似乎确实有点复杂。谢谢大佬!
    猜你喜欢
    • 1970-01-01
    • 2014-08-13
    • 2023-01-26
    • 2019-08-29
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多