正在从内核模块读取原始性能计数器



我的目标是从另一个内核模块中读取内核3.14(lwn链接)中引入的intel rapl计数器(perf_event_intel_rapl.c)。使用perf_event_create_kernel_counter可以很容易地读取"通用"计数器。我发现了一个很好的例子:http://wadeatwork.com/?p=1SW_CPU_CLOCK

perf手册页(链接)指出,对于"非通用"事件,PERF_TYPE_RAW应与特定于实现的配置字段一起用作perf_event_attr->type

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

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

你应该试试命令:

sudo perf list

查看事件电源/能量核心/是否存在,如果不存在,则说明您的CPU不支持RAPL,或者perf_event未在CPU上启用RAPL功能。如果您的CPU支持RAPL,但它没有在perf_event中启用,则可以通过将对CPU的RAPL支持添加到perf_event中来启用它,如本链接中所述。

一旦您的CPU得到支持,您就可以使用perf工具通过以下命令进行评测:

sudo perf stat -e power/energy-cores

有关进一步的详细信息,这是一个指南,其中包含使用perf工具对RAPL事件进行采样的步骤,该工具详细描述了上述内容并提供了一些代码。

最新更新