perf
добавил неподтвержденный PMU для отображения счетчиков энергопотребления Intel RAPL. События power/energy-cores
и power/gpu
в perf
сопоставляются с доменами RAPL PP0 и PP1 соответственно. Вы можете увидеть это здесь .
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, пожалуйста, обратитесь к руководству Intel для разработчиков программного обеспечения, том 3b (Глава по управлению питанием и тепловым режимом).
Каждый из этих доменов имеет свои собственные архитектурные возможности. Эти возможности будут обозначены наличием определенных неархитектурных MSR в процессоре. Но наличие этих доменов зависит от модели процессора Intel. Некоторые модели процессоров будут поддерживать все эти домены, некоторые - только некоторые.
perf
пытается выполнить поиск этих MSR RAPL и создает таблицу устройств rapl_model_match
на основе модели процессора в соответствии с конструкцией модуля msr и cstate.
Снимок: здесь .
Например, вы можете увидеть здесь , что только домены Package и DRAM поддерживаются.
static struct rapl_model model_knl = {
.events = BIT(PERF_RAPL_PKG) |
BIT(PERF_RAPL_RAM),
.apply_quirk = true,
};
Таким образом, для получения других событий вам придется использовать систему с другой процессорной моделью , тем самым обеспечивая наличие всех соответствующих RAPL MSR. Вы не можете просто встроить поддержку в вашу существующую систему, чтобы волшебным образом использовать события energy-cores
и gpu
.