Я не вижу параметр power/energy-cores 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-pkg и power/energy-ram.

а у некоторых людей было power/energy-gpu.

Как получить energy-cores и energy-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

person MOOMIN    schedule 20.03.2020    source источник


Ответы (1)


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 пытается найти эти RAPL MSR и создает 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,
};

Таким образом, для получения других событий вам придется использовать систему с другой моделью процессора, тем самым обеспечивая наличие всех соответствующих MSR RAPL. Вы не можете просто встроить поддержку в существующую систему, чтобы волшебным образом использовать события energy-cores и gpu.

person Arnabjyoti Kalita    schedule 21.03.2020
comment
спасибо за Ваш ответ. Я могу получить много деталей и принципов производительности и узнать, где я нахожу код ядра Linux для своего домена производительности. спасибо за многое. :) - person MOOMIN; 28.03.2020
comment
У меня есть еще один вопрос. Как изменить содержимое регистра MSR? Я нашел одно решение с помощью «MSR-Tool», есть ли другой способ изменить регистр MSR помимо использования MSR-Tool? - person MOOMIN; 28.03.2020
comment
Вы можете использовать wrmsr помимо MSR-Tool. - person Arnabjyoti Kalita; 29.03.2020