Как Apple рассчитывает энергопотребление процесса в OS X Mavericks

15

В OS X Mavericks вы можете отслеживать энергопотребление различных процессов в Activity Monitor. Монитор активности, показывающий столбцы Energy ImpactЗдесь мы видим «Энергетическое воздействие» и «Среднее энергетическое воздействие», и значения могут превышать 100.

Также появится значок строки меню, в котором перечислены наиболее энергоемкие приложения, работающие в данный момент.

Есть ли документация, как apple рассчитывает текущее энергопотребление? Есть ли связь между загрузкой процессора и энергопотреблением?

Надеюсь, здесь есть эксперты, которые могут дать мне подсказку.

Kilosh
источник

Ответы:

1

Есть много аспектов использования процессора, которые влияют на потребление энергии. Дело не только в том, сколько процессора потребляет приложение, но и в том, насколько часто и насколько гибко оно в этом. Последний может иметь гораздо больший эффект.

Приложение, которое должно просыпаться ровно каждые 10 мсек, чтобы выполнить всего несколько строк простого кода Obj-C, может оказывать воздействие энергии на порядок больше, чем то же приложение, выполняющее тысячи строк кода, но раз в секунду и не очень особенно о том, когда именно в эту секунду произойдет расчет.

Apple, вероятно, использует счетчики производительности Intel и учитывает их в своем приложении. Вы, вероятно, получите наибольшее понимание, если сначала будете следовать руководствам Intel, чтобы понять состояние питания и управление энергопотреблением. Это сильно зависит от архитектуры. Приложение с плохим поведением может оказать гораздо большее влияние на Haswell, чем на «старый» компьютер Core 2.

Использование других ресурсов, таких как аудиосистема, выполнение дискового ввода-вывода или использование USB-устройств, также может быть учтено. Вероятный метод учета позволит назначить вашему приложению все энергопотребление, необходимое исключительно для ресурсов, используемых вашим приложением (скажем, пользовательское USB-устройство, доступ к аудиосистеме, отключенной во всех остальных случаях), и проведите какую-то оценку для общего оборудования.

Восстановить Монику
источник
1

Все начинается с точного мониторинга и измерений вплоть до миллисекунд.

В качестве примера Intel сделала инструмент для мониторинга параметров процессора Intel.

Он отображает мощность, частоту и темп.

Потребляемая мощность и температура являются продуктами частоты (скорости) или объема обрабатываемых данных.

Частота дискретизации составляет миллисекунды, а мощность в ваттах, и она измеряет общую мощность процессора, в то время как монитор активности разбивает ее по приложениям / процессам.

Intel

Вот статья от Apple об управлении питанием / потреблении, которая немного подробнее рассказывает о том, как управлять питанием.

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

Перед тс

перед

Используя приведенную выше информацию для каждого приложения и полученного в результате кумулятивного энергопотребления, Apple реализовала функции Timer Coalescing и App Nap для управления энергопотреблением, что приводит к приведенной ниже диаграмме.

После тс

после

Чтобы увидеть больше информации о графиках выше, посетите эту статью .

Поскольку активность управления ЦП, включая управление ОЗУ и чтение / запись на диск, сетевая карта и другие, например, улучшают управление ОЗУ, также снижает энергопотребление, возникающее из-за частой активности чтения / записи диска.

Существует много аспектов управления питанием, и они представляют собой сочетание очень точных измерений и программных решений, позволяющих снизить энергопотребление.

Вот некоторые примеры:

Функция App Nap

Функция объединения таймеров PDF

Функция управления оперативной памятью

Ruskes
источник
1
@grgarside Изображения, кажется, приходят с сайтов, ссылки на которые есть в ответах. Тем не менее, не повредит явно указать источник каждой картинки.
холме
1
@ patrix- сделано, показало источники для всего :)
Ruskes
0

Кажется, нет никакой документации о том, как рассчитывается энергопотребление. Использование ЦП само по себе не может надежно предсказать потребление энергии. Итак, основными факторами, которые будут рассмотрены, будут (они несколько дополняют то, что App Nap смотрит и контролирует):

  • использование процессора
  • Дисковый ввод / вывод
  • Сетевой ввод / вывод
  • Периферийное использование (например, звуковые колонки)

Опять же, нет подробных сведений о том, как измеряется каждый из этих факторов, и о формулах, используемых для расчета потребляемой мощности. Мы можем сделать некоторые обоснованные предположения о том, что каждый Mac (а также ПК) оснащен различными датчиками в системе. Вы можете использовать такой инструмент, как Hardware Monitor, чтобы увидеть, какие датчики у вашего Mac и что они сообщают в режиме реального времени.

Ключевыми датчиками, относящимися к энергопотреблению, которые доступны (и используются в течение нескольких лет) в Аппаратном мониторе, являются напряжение процессора, ток процессора и мощность процессора. Для других элементов в приведенном выше списке нет аппаратных датчиков для измерения потребляемой мощности. Поэтому Apple должна использовать конкретные факторы экстраполяции в зависимости от модели Mac и используемого оборудования.

MK
источник
0

Номер, кажется, идет из программы top. Я нашел следующее сообщение в блоге, в котором более подробно рассматривается этот расчет: https://blog.mozilla.org/nnethercote/2015/08/26/what-does-the-os-x-activity-monitors-energy-impact -Вообще-мера /

В каждом случае показатель «Energy Impact» Activity Monitor был таким же, как topи показатель POWER. Каждый признак состоит в том, что оба вычисляются одинаково на этом компьютере.

Так как topэто открытый исходный код, мы можем исследовать фактическую формулу / код для того, как это число вычисляется, и сообщение в блоге суммирует это как:

|elapsed_us| is the length of the sample period
|used_us| is the time this process was running during the sample period

%CPU = (used_us * 100.0) / elapsed_us

POWER = if is_a_kernel_process()
          0
        else
          ((used_us + IDLEW * 500) * 100.0) / elapsed_us

Как намекает @Ruskes, расчеты основаны на пробуждениях вашего процесса, измеренных на уровне миллисекунд. В блоге упоминается, что:

Вычисление POWER является функцией процессора и IDLEW. Это в основном то же самое, что и% CPU, но с «налогом» в 500 микросекунд для каждого пробуждения и исключением для процессов ядра. Значение этой функции может легко превысить 100 - например, программа с нулевой загрузкой ЦП и 3000 пробуждений в секунду будет иметь показатель POWER 150 - так что это не процент. Фактически, POWER - это единичная мера, потому что она представляет собой полу произвольную комбинацию двух мер с несовместимыми единицами.

По сути, вы можете рассматривать число как меру пробуждения процессора.

Билл Мэй
источник