我的目标是从另一个内核模块中读取内核 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 计数器。我还没有找到任何关于如何从内核模块实现这一点的文档。
最佳答案
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详细描述了上述内容并提供了一些代码。
关于linux - 从内核模块读取原始性能计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663907/