我注意到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/
目录下似乎有很多非常有用的东西,但是没有关于这些功能的文档?怎么来的?
答案 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_*
文件中的功能由oprofile
和perf
工具等工具使用/提供。
不,它们并不总是可用,因为有一个配置选项(CONFIG_PERF_EVENTS)来启用/禁用性能测量。
该功能并非真正意味着可以从其他驱动程序中使用。我非常确定会“扰乱”oprofile
或perf
的任何用户。