从内核模块读取原始perf计数器

时间:2014-09-04 11:06:53

标签: linux kernel kernel-module perf

我的目标是从另一个内核模块中读取内核3.14(perf_event_intel_rapl.c)中引入的intel rapl计数器(lwn-link)。使用perf_event_create_kernel_counter可以轻松阅读“常规”计数器。我找到了一个很好的例子:http://wadeatwork.com/?p=1SW_CPU_CLOCK

perf联机帮助页(link)表示,“非广义”事件PERF_TYPE_RAW应与perf_event_attr->type一起用作特定于实现的配置字段。

我的问题是如何配置perf_event_attr结构以访问rapl计数器。我还没有找到任何关于如何从内核模块实现这一目标的文档。

1 个答案:

答案 0 :(得分:0)

对RAPL的perf_event支持包括可在系统范围内访问的通用事件,需要root访问权限(sudo)。

你应该尝试命令:

sudo perf list

并查看事件power / energy-cores /是否存在,如果没有,则CPU没有RAPL支持或perf_event不启用CPU上的RAPL功能。如果您的CPU支持RAPL但在perf_event中未启用,则可以adding RAPL support for your CPU to perf_event as described in this link启用它。

支持CPU后,您可以使用perf工具使用以下命令进行性能分析:

sudo perf stat -e power/energy-cores

有关详细信息,请参阅a guide with steps to sample RAPL events using perf tool,其中详细介绍了上述内容并提供了一些代码。