Измерение значений мощности

Производители устройств должны предоставить профиль мощности компонента в /frameworks/base/core/res/res/xml/power_profile.xml .

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

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

Устройства с контроллерами Bluetooth, модема и Wi-Fi под управлением Android 7.0 и выше могут предоставить дополнительные значения мощности, полученные из данных чипсета.

Устройства с гетерогенными процессорами

Профиль мощности для устройств с ядрами ЦП гетерогенной архитектуры должен включать следующие дополнительные поля:

  • Общее количество процессоров для каждого кластера (выражено в cpu.clusters.cores).
  • Скорости ЦП, поддерживаемые каждым кластером.
  • Активное энергопотребление ЦП для каждого кластера.

Чтобы различать активное энергопотребление ЦП и поддерживаемые частоты ЦП для кластеров, добавьте номер кластера к имени массива. Номера кластеров назначаются в порядке ядер ЦП в дереве устройств ядра. Например, в гетерогенной архитектуре с двумя (2) кластерами по четыре (4) ядра:

  • cluster0 состоит из cpu0-3
  • cluster1 состоит из cpu4-7

Платформа Android использует эти номера ядер ЦП при считывании статистики из файлов sysfs в: /sys/devices/system/cpu/cpu<number>/cpufreq/stats .

Пример кластерных процессоров и скоростей:

<array name="cpu.active.cluster0">
<value>200</value>
<value>300</value>
<value>400</value>
</array>
<array name="cpu.speeds.cluster0">
<value>600000</value>
<value>800000</value>
<value>1200000</value>
</array>

<array name="cpu.active.cluster1">
<value>400</value>
<value>500</value>
<value>600</value>
</array>
<array name="cpu.speeds.cluster1">
<value>800000</value>
<value>1200000</value>
<value>1400000</value>
</array>

Значения мощности

В следующей таблице описаны доступные настройки мощности. Пример файла в AOSP см. в файле power_profile.xml .

Имя Описание Пример значения Примечания
эмбиент.он Дополнительная мощность потребляется, когда экран находится в спящем режиме/режиме Ambient/режиме Always On, а не выключен. около 100 мА -
экран.на Дополнительная мощность потребляется при работе экрана на минимальной яркости. 200 мА Включает сенсорный контроллер и подсветку дисплея. Яркость 0, а не минимальный уровень для Android, который обычно составляет 10 или 20%.
экран.полный При максимальной яркости экрана потребляется больше энергии по сравнению с минимальной яркостью экрана. 100 мА-300 мА Часть этого значения (в зависимости от яркости экрана) добавляется к значению screen.on для расчета энергопотребления экрана.
wifi.on Дополнительная мощность потребляется, когда Wi-Fi включен, но не принимает, не передает и не сканирует данные. 2 мА -
Wi-Fi.активный Дополнительная мощность, используемая при передаче или приеме по Wi-Fi. 31 мА -
wifi.scan Дополнительная мощность потребляется при сканировании точек доступа Wi-Fi. 100 мА -
аудио Дополнительная мощность используется при декодировании/кодировании звука через DSP. около 10 мА Используется для DSP-аудио.
видео Дополнительная мощность используется при декодировании видео через DSP. около 50 мА Используется для DSP-видео.
камера.средн. Среднее энергопотребление подсистемы камеры для типичного приложения камеры. 600 мА Предполагается, что это будет грубая оценка для приложения, выполняющего предварительный просмотр и делающего около 10 снимков в полном разрешении в минуту.
камера.фонарик Средняя мощность, потребляемая модулем вспышки камеры во включенном состоянии. 200 мА -
GPS.на основе качества сигнала Дополнительная мощность, потребляемая GPS, зависит от уровня сигнала. Этот параметр имеет несколько значений: по одному на уровень сигнала, от самого слабого до самого сильного. 30 мА, 10 мА -
gps.on Дополнительная мощность потребляется при получении сигнала GPS. 50 мА -
радио.активный Дополнительная мощность используется при передаче/приеме сотовой радиосвязи. 100 мА-300 мА -
радио.сканирование Дополнительная мощность используется при пейджинговой связи с вышкой сотовой связи. 1,2 мА -
радио.на Дополнительная мощность, потребляемая при включении сотовой связи. Этот параметр может принимать несколько значений: по одному для каждого уровня сигнала (нет сигнала, слабый, средний, сильный). 1,2 мА Некоторые радиостанции увеличивают мощность, когда ищут вышку сотовой связи и не обнаруживают сигнал. Значения могут быть одинаковыми или уменьшаться с увеличением уровня сигнала. Если указано только одно значение, оно будет использоваться для всех уровней мощности. Если указано два значения, первое будет использоваться при отсутствии сигнала, второе — для всех остальных уровней мощности и так далее.
bluetooth.controller.idle Средний потребляемый ток (мА) контроллера Bluetooth в режиме ожидания. - Эти значения не являются расчётными, а берутся из паспорта контроллера. При наличии нескольких состояний приёма или передачи берётся среднее значение. Кроме того, система теперь собирает данные для сканирования с низким энергопотреблением (LE) и Bluetooth .

В Android 7.0 и более поздних версиях больше не используются значения мощности Bluetooth для bluetooth.active (используется при воспроизведении звука через Bluetooth A2DP) и bluetooth.on (используется, когда Bluetooth включен, но находится в режиме ожидания).
bluetooth.controller.rx Средний потребляемый ток (мА) контроллера Bluetooth при приеме. -
bluetooth.controller.tx Средний ток потребления (мА) контроллера Bluetooth при передаче. -
напряжение.контроллера.bluetooth Среднее рабочее напряжение (мВ) контроллера Bluetooth. -
модем.контроллер.сон Средний потребляемый ток (мА) контроллера модема в спящем режиме. 0 мА Эти значения не являются приблизительными, а взяты из паспорта контроллера. При наличии нескольких состояний приёма берётся среднее значение. При наличии нескольких состояний передачи, начиная с Android 9, поддерживается указание значения для каждого состояния передачи.
модем.контроллер.в режиме ожидания Средний ток потребления (мА) контроллера модема в режиме ожидания. -
модем.контроллер.rx Средний ток потребления (мА) контроллера модема при приеме. -
модем.контроллер.tx Средний ток потребления (мА) контроллера модема при передаче на разных уровнях мощности радиочастотного сигнала. Это многозначный параметр, по одному значению на каждый уровень мощности передачи. 100 мА, 200 мА, 300 мА, 400 мА, 500 мА
напряжение.контроллера.модема Среднее рабочее напряжение (мВ) контроллера модема. -
wifi.controller.idle Средний потребляемый ток (мА) контроллера Wi-Fi в режиме ожидания. - Эти значения не являются расчётными, а берутся из паспорта контроллера. При наличии нескольких состояний приёма или передачи берётся среднее значение этих состояний.
wifi.controller.rx Средний ток потребления (мА) контроллера Wi-Fi при приеме. -
wifi.controller.tx Средний ток потребления (мА) контроллера Wi-Fi при передаче. -
напряжение.контроллера.wifi Среднее рабочее напряжение (мВ) контроллера Wi-Fi. -
скорости процессора Это многозначная запись, в которой указаны все возможные значения частоты процессора в кГц. 125000 КГц, 250000 КГц, 500000 КГц, 1000000 КГц, 1500000 КГц Количество и порядок записей должны соответствовать записям мА в cpu.active.
cpu.idle Общая мощность, потребляемая системой, когда процессоры (и SoC) находятся в состоянии приостановки работы системы. 3 мА -
cpu.awake Дополнительная мощность потребляется, когда ЦП находятся в состоянии простоя планирования (цикл простоя ядра); система не находится в состоянии приостановки системы. 50 мА На вашей платформе может использоваться несколько состояний бездействия с разным уровнем энергопотребления; выберите репрезентативное состояние бездействия для более длительных периодов бездействия планировщика (несколько миллисекунд). Изучите график энергопотребления на вашем измерительном оборудовании и выберите отсчёты, в которых потребление процессора минимально, отбросив отсчёты с более высоким уровнем энергопотребления, в которых процессор выходил из состояния бездействия.
cpu.active Дополнительная мощность, потребляемая процессорами при работе на разных скоростях. 100 мА, 120 мА, 140 мА, 160 мА, 200 мА Значение представляет мощность, потребляемую шинами питания процессора при работе на разных частотах. Установите максимальную скорость в ядре для каждой из допустимых частот и зафиксируйте процессор на этой частоте. Количество и порядок записей соответствуют количеству и порядку записей в cpu.speeds.
cpu.clusters.cores Количество ядер в каждом кластере ЦП. 4, 2 Требуется только для устройств с гетерогенной архитектурой ЦП . Количество и порядок записей должны соответствовать количеству записей кластера для cpu.active и cpu.speeds. Первая запись представляет количество ядер ЦП в кластере Cluster0, вторая запись — количество ядер ЦП в кластере Cluster1 и т. д.
емкость батареи Общая емкость аккумулятора в мАч. 3000 мАч -

Сканирование с низким энергопотреблением (LE) и Bluetooth

На устройствах под управлением Android 7.0 система собирает данные о низкоэнергетических сканированиях (LE) и сетевом трафике Bluetooth (например, RFCOMM и L2CAP) и связывает эти действия с инициирующим приложением. Сканирования Bluetooth связаны с приложением, которое их инициировало, а пакетные сканирования — нет (они связаны с приложением Bluetooth). Если приложение сканирует в течение N миллисекунд, стоимость сканирования составляет N миллисекунд времени приёма и N миллисекунд времени передачи; всё оставшееся время контроллера выделяется сетевому трафику или приложению Bluetooth.