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

Linux 从内核模块读取原始性能计数器,linux,kernel,kernel-module,perf,Linux,Kernel,Kernel Module,Perf,我的目标是从另一个内核模块中读取内核3.14()中引入的英特尔rapl计数器()。使用perf\u event\u create\u kernel\u计数器可以轻松读取“general”计数器。我发现了一个很好的例子: perf manpage()表示,对于“非通用”事件,perf\u TYPE\u RAW应与特定于实现的配置字段一起用作perf\u event\u attr->TYPE 我的问题是如何配置perf\u event\u attr结构以访问rapl计数器。我还没有找到任何关于如何从

我的目标是从另一个内核模块中读取内核3.14()中引入的英特尔rapl计数器()。使用
perf\u event\u create\u kernel\u计数器可以轻松读取“general”计数器。我发现了一个很好的例子:

perf manpage()表示,对于“非通用”事件,
perf\u TYPE\u RAW
应与特定于实现的配置字段一起用作
perf\u event\u attr->TYPE


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

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

您应该尝试以下命令:

sudo perf list
sudo perf stat -e power/energy-cores
并查看事件power/energy cores/是否存在,如果没有,您的CPU没有RAPL支持,或者perf_事件没有在您的CPU上启用RAPL功能。如果您的CPU支持RAPL,但在perf_事件中未启用它,则可以通过启用它

支持CPU后,可以使用perf工具使用以下命令进行评测:

sudo perf list
sudo perf stat -e power/energy-cores
有关更多详细信息,这是对上述内容的详细描述,并提供了一些代码