Измерение энергопотребления производительности: как это работает?

Я заметил, что perf list теперь имеет возможность измерять энергопотребление. Вы можете использовать его следующим образом:

$ perf stat -e power/energy-cores/ ./a.out 
Performance counter stats for 'system wide':

              8.55 Joules power/energy-cores/

       0.949871058 seconds time elapsed

Насколько точно это измерение и как perf оценивает энергопотребление?


person user14717    schedule 02.05.2019    source источник


Ответы (2)


Счетчик power/energy-cores/ perf основан на регистре MSR с именем MSR_PP0_ENERGY_STATUS, который является частью интерфейса Intel RAPL (похоже, Intel называет каждый отдельный RAPL MSR интерфейсом RAPL). Для оценки (статического и динамического) энергопотребления используется сложная модель, основанная на событиях активности системы. В имени регистра MSR есть PP0, который относится к плоскости питания 0, которая является одним из доменов RAPL, который содержит все ядра сокета, включая частные кэши ядер. Однако PP0 исключает кэш последнего уровня, интерконнект, контроллер памяти, графический процессор и все остальное, что находится в неядре. Невозможно измерить точность MSR_PP0_ENERGY_STATUS, потому что нет другого способа оценить энергопотребление только плоскости мощности 0.

Однако можно измерить точность других доменов RAPL. К ним относятся домены Package, DRAM и PSys. Например, точность оценки энергопотребления домена пакета можно измерить, сравнив с энергопотреблением всей системы (которое можно измерить с помощью измерителя мощности) и запустить рабочую нагрузку, при которой энергопотребление всего, что находится за пределами пакета, известно. по возможности постоянный. Точность MSR_PKG_ENERGY_STATUS и MSR_DRAM_ENERGY_STATUS по-разному измерялась разными людьми на разных процессорах. Вы можете обратиться к недавней статье под названием RAPL в действии: опыт использования RAPL для измерения мощности для получения дополнительной информации, которая также включает резюме предыдущих работ. В документе рассматриваются Sandy Bridge, Ivy Bridge, Haswell и Skylake. Вывод состоит в том, что MSR_PKG_ENERGY_STATUS и MSR_DRAM_ENERGY_STATUS кажутся точными на Haswell и Skylake (реализация на Haswell изменилась, см.: Обзор функций энергоэффективности процессора Intel Haswell). Но это не обязательно верно для всех видов рабочих нагрузок, состояний P и процессоров. Так что точность зависит не только от микроархитектуры.

Интерфейс RAPL обсуждается в разделе 14.9 руководства Intel, том 3. Я заметил, что в этом разделе есть ошибки. Например, в нем говорится, что клиентские процессоры не поддерживают домен DRAM, что не соответствует действительности. Клиентский процессор Haswell, который я использую для написания этого ответа, поддерживает домен DRAM. Раздел, вероятно, устарел и относится только к процессорам Sandy Bridge и Ivy Bridge. Я думаю, что лучше прочитать даташит процессора, на котором вы хотите использовать RAPL.

Счетчик power/energy-pkg/ perf можно использовать для измерения энергопотребления домена пакета. Известно, что это единственный домен, поддерживаемый всеми процессорами Intel, начиная с Sandy Bridge.

person Hadi Brais    schedule 02.05.2019

В системах x86 эти значения основаны на RAPL (Running Average Power Limit) – интерфейс со встроенными счетчиками энергии ЦП. Первоначально разработанный Intel, AMD также предоставляет совместимый интерфейс для систем Zen.

Точность зависит от фактической микроархитектуры. Первоначально RAPL опиралась на модель с определенными предубеждениями. В процессорах Intel, начиная с архитектуры Haswell, он основан на довольно точных измерениях. Насколько я знаю, нет хорошего понимания точности реализации AMD Zen RAPL.

Одна важная вещь, которую вы должны учитывать, - это объем измерений. В большинстве систем покрываются только пакеты и DRAM1. Так что, если вам нужно знать, сколько энергии/энергии потребляет вся ваша система, вы обычно не сможете легко ответить на этот вопрос с помощью RAPL.

Также обратите внимание, что RAPL обновляется каждую 1 мс, поэтому короткие рабочие нагрузки будут иметь значительные ошибки из-за частоты обновления.

1 – системы Skylake Desktop могут реализовать полносистемный RAPL. Точность зависит от производителя.

person Zulan    schedule 02.05.2019