Измерение потребляемой мощности: как это работает? - PullRequest
6 голосов
/ 02 мая 2019

Я заметил, что 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

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

Ответы [ 2 ]

5 голосов
/ 03 мая 2019

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

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

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

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

4 голосов
/ 03 мая 2019

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

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

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

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

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

...