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

标签 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 计数器。我还没有找到任何关于如何从内核模块实现这一点的文档。

最佳答案

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/

相关文章:

sql - Plesk 不显示所有数据库?

c - 在另一个文件夹中创建 1000 个文件夹并将文件放在最后一个文件夹中的最快方法

linux - 可视化像维基百科这样的巨大图表

windows - 页面文件中的物理页面和页面之间有什么关系?

linux - 检查搜索状态

linux - Docker 容器内的操作系统软件?

windows - 转储 $mft 文件的内容

c - 测试内核模块

c - 在内核和用户端保持 Netlink Socket 打开

linux-device-driver - _IOR_BAD 和_IOW_BAD 的目的是什么?