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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用kernel / perf_event *。[hc]分析框架?相关的知识,希望对你有一定的参考价值。

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

答案

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_*文件中的功能由oprofileperf工具等工具使用/提供。

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

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

以上是关于如何使用kernel / perf_event *。[hc]分析框架?的主要内容,如果未能解决你的问题,请参考以下文章

使用 perf_events/oprofile 在 Linux 上分析 JIT 的输出?

XDP/eBPF — 基于 eBPF 的 Linux Kernel 可观测性

XDP/eBPF — 基于 eBPF 的 Linux Kernel 可观测性

内核调试-perf introduction

KVM Tracing, perf_events

Linux内核性能架构:perf_event