我的目标是从另一个内核模块中读取内核3.14(perf_event_intel_rapl.c)中引入的英特尔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计数器。我还没有找到任何关于如何从内核模块实现这一点的文档。

最佳答案

rapl的perf_事件支持包括可以作为系统范围访问的通用事件,需要根访问(sudo)。
您应该尝试以下命令:

sudo perf list

并查看事件power/energy cores/是否存在,如果不存在,则表明您的cpu没有rapl支持,或者perf_事件没有在您的cpu上启用rapl功能。如果您的CPU支持RAPL,但在Perf_事件中未启用,则可以通过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,它详细描述了上面的内容并提供了一些代码。

关于linux - 从内核模块读取原始性能计数器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25663907/

10-10 12:50