如何使用kernel / perf_event *。[hc]分析框架?

时间:2013-09-06 17:04:57

标签: c linux kernel arm profiling

我注意到arch / arm / kernel下有一些分析源代码:

perf_event.c 
perf_event_cpu.c 
perf_event_v6.c 
perf_event_v7.c 
perf_event_xscale.c

我无法理解这些文件的层次结构以及如何使用它们?我可以假设它们总是存在并在内核模块中使用它们吗?我的内核模块在Cortex-A7或Cortex-A15内核上运行。

/arch/arm/kernel/目录下似乎有很多非常有用的东西,但是没有关于这些功能的文档?怎么来的?

2 个答案:

答案 0 :(得分:4)

Perf_event确实提供了一个可以编程方式使用的API,但文档最多也是稀疏的。 Vince Weaver在这里使用perf_event API是最好的资源:http://web.eece.maine.edu/~vweaver/projects/perf_events/

他还提供了一些记录计数器的示例代码。

然而,最好的办法是使用一个封装了perf_event并使其更易于访问的API,例如PAPI(http://icl.cs.utk.edu/papi/

编辑:由于您希望从内核模块执行此操作,因此PAPI将不可用。但是,perf_event API仍然是。

答案 1 :(得分:1)

perf_*文件中的功能由oprofileperf工具等工具使用/提供。

不,它们并不总是可用,因为有一个配置选项(CONFIG_PERF_EVENTS)来启用/禁用性能测量。

该功能并非真正意味着可以从其他驱动程序中使用。我非常确定会“扰乱”oprofileperf的任何用户。