如何使用kernel / perf_event *。

我注意到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/目录下似乎有很多非常有用的东西,但没有关于这些function的文档? 怎么会 ?

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仍然是。

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

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

该功能并不是真的意味着从另一个驱动程序使用。 我敢肯定,这将“打乱”任何oprofile或性能的用户。