我看不到 perf 的功率/能量核心选项来测量功耗



我的系统使用Intel(R(Xeon(R(Gold处理器和Centos,Linux内核5.5.2版本

perf版本输出为5.5.2-1.el7.elrepo.x86_64

我不会得到每个核心的功耗。所以我试了一下。

>>>  sudo perf stat -a -r 1 -e "power/energy-cores/" ./run
event syntax error: 'power/energy-cores/'
___ unknown term
valid terms: event,config,config1,config2,name,period,percore
Initial error:
event syntax error: 'power/energy-cores/'
___ unknown term
valid terms: event,config,config1,config2,name,period,percore
Run 'perf list' for a list of valid events
Usage: perf stat [<options>] [<command>]
-e, --event <event>   event selector. use 'perf list' to list available event

正如您所看到的,出现了一个错误。

所以我在/sys/bus/event_source/devices/power/events目录中查看了这里的事件。

结果不足。

>>> ls /sys/bus/event_source/devices/power/events
energy-pkg  energy-pkg.scale  energy-pkg.unit  energy-ram  energy-ram.scale  energy-ram.unit

我看不到power/energy-cores选项。我只有一个power/energy-pkgpower/energy-ram选项。

部分患者有CCD_ 6。

如何获得energy-coresenergy-gpu

>>> perf list | grep energy
power/energy-pkg/                                  [Kernel PMU event]
power/energy-ram/                                  [Kernel PMU event]

>>> sudo perf stat -a -r 1 -e "power/energy-pkg/" -e "power/energy-ram/" ./run
6765
Performance counter stats for 'system wide':
0.06 Joules power/energy-pkg/
0.01 Joules power/energy-ram/
0.001452589 seconds time elapsed

perf添加了一个非核心PMU,以公开Intel RAPL能耗计数器。perf中的事件power/energy-corespower/gpu分别映射到RAPL域PP0PPA1。你可以在这里看到这个。

static struct perf_msr rapl_msrs[] = {
[PERF_RAPL_PP0]  = { MSR_PP0_ENERGY_STATUS,      &rapl_events_cores_group, test_msr },
[PERF_RAPL_PKG]  = { MSR_PKG_ENERGY_STATUS,      &rapl_events_pkg_group,   test_msr },
[PERF_RAPL_RAM]  = { MSR_DRAM_ENERGY_STATUS,     &rapl_events_ram_group,   test_msr },
[PERF_RAPL_PP1]  = { MSR_PP1_ENERGY_STATUS,      &rapl_events_gpu_group,   test_msr },
[PERF_RAPL_PSYS] = { MSR_PLATFORM_ENERGY_STATUS, &rapl_events_psys_group,  test_msr },
};

要阅读有关RAPL域的信息,请访问《英特尔软件开发人员手册》第3b卷(电源和热管理章节(。

这些域中的每一个都具有自己的体系结构功能。这些能力将通过处理器中存在某些非体系结构MSR来指示。但这些域的存在因不同的英特尔处理器型号而异。有些处理器型号将支持所有这些域,有些则只支持少数域。

perf试图探测这些RAPL msr,并根据处理器的模型创建rapl_model_match设备表,遵循msr和cstate模块的设计。

这里有一张快照。

例如,您可以在此处看到,仅支持PackageDRAM域。

static struct rapl_model model_knl = {
.events     = BIT(PERF_RAPL_PKG) |
BIT(PERF_RAPL_RAM),
.apply_quirk    = true,
};

因此,为了获得其他事件,您必须使用具有不同处理器型号的系统,从而确保存在所有相关的RAPL MSR。您不能仅仅在现有系统中构建支持来神奇地使用energy-coresgpu事件。

相关内容

  • 没有找到相关文章

最新更新