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

Производители устройств должны обеспечивать профиль компонента мощности в /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 структура использует эти основные числа CPU , когда он читает статистические данные из 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.on Дополнительная мощность, используемая, когда экран находится в режиме ожидания / окружающей среды / всегда включен, а не выключен. около 100 мА -
screen.on Дополнительная мощность, используемая, когда экран включен на минимальную яркость. 200 мА Включает сенсорный контроллер и подсветку дисплея. При 0 яркости, а не на минимальном уровне Android, который обычно составляет 10 или 20%.
screen.full Дополнительная мощность, используемая, когда экран имеет максимальную яркость, по сравнению с экраном с минимальной яркостью. 100 мА-300 мА Часть этого значения (в зависимости от яркости экрана) добавляется к значению screen.on для вычисления энергопотребления экрана.
wifi.on Дополнительная мощность, используемая, когда Wi-Fi включен, но не принимает, не передает и не сканирует. 2 мА -
wifi.active Дополнительная мощность, используемая при передаче или приеме по Wi-Fi. 31 мА -
wifi.scan Дополнительная мощность, используемая, когда Wi-Fi ищет точки доступа. 100 мА -
аудио Дополнительная мощность, используемая при декодировании / кодировании звука через DSP. около 10 мА Используется для звука DSP.
видео Дополнительная мощность, используемая при декодировании видео через DSP. около 50 мА Используется для видео DSP.
camera.avg Среднее энергопотребление подсистемы камеры для типичного приложения камеры. 600 мА Предназначен как приблизительная оценка для приложения, выполняющего предварительный просмотр и захватывающего примерно 10 изображений с полным разрешением в минуту.
камера. вспышка Средняя мощность, потребляемая модулем вспышки камеры во включенном состоянии. 200 мА -
gps.signalqualitybased Дополнительная мощность, используемая GPS, в зависимости от мощности сигнала. Это запись с несколькими значениями, по одному на мощность сигнала, от самого слабого до самого сильного. 30 мА, 10 мА -
gps.on Дополнительная мощность, используемая, когда GPS получает сигнал. 50 мА -
радиоактивный Дополнительная мощность, используемая при передаче / приеме сотовой радиосвязи. 100 мА-300 мА -
радио. сканирование Дополнительная мощность, используемая при поиске по вышке сотовой радиосвязи. 1,2 мА -
радио. на Дополнительная мощность, используемая при включенном сотовом радио. Это запись с несколькими значениями, по одному на мощность сигнала (нет сигнала, слабый, умеренный, сильный). 1,2 мА Некоторые радиостанции увеличивают мощность, когда ищут вышку сотовой связи и не обнаруживают сигнал. Значения могут быть такими же или уменьшаться с увеличением мощности сигнала. Если вы указываете только одно значение, для всех сильных сторон используется одно и то же значение. Если вы указываете два значения, первое используется для отсутствия сигнала, второе значение используется для всех остальных уровней и т. Д.
bluetooth.controller.idle Среднее потребление тока (мА) контроллера Bluetooth в режиме ожидания. - Эти значения не являются приблизительными, а взяты из техпаспорта контроллера. Если имеется несколько состояний приема или передачи, берется среднее из этих состояний. Кроме того, теперь система собирает данные для Low Energy (LE) и сканирования Bluetooth .

Android 7.0 и более поздние версии больше не используют значения мощности Bluetooth для bluetooth.active (используется при воспроизведении звука через Bluetooth A2DP) и bluetooth.on (используется, когда Bluetooth включен, но находится в режиме ожидания).
bluetooth.controller.rx Среднее потребление тока (мА) контроллера Bluetooth при приеме. -
bluetooth.controller.tx Среднее потребление тока (мА) контроллера Bluetooth при передаче. -
bluetooth.controller.voltage Среднее рабочее напряжение (мВ) контроллера Bluetooth. -
modem.controller.sleep Среднее потребление тока (мА) контроллера модема в спящем режиме. 0 мА Эти значения не являются приблизительными, а взяты из техпаспорта контроллера. Если имеется несколько состояний приема, берется среднее из этих состояний. При наличии нескольких состояний передачи указание значения для каждого состояния передачи поддерживается начиная с Android 9.
modem.controller.idle Среднее потребление тока (мА) контроллера модема в режиме ожидания. -
modem.controller.rx Среднее потребление тока (мА) контроллера модема при приеме. -
modem.controller.tx Среднее потребление тока (мА) контроллера модема при передаче на разных уровнях мощности РЧ. Это многозначная запись с одним значением для каждого уровня мощности передачи. 100 мА, 200 мА, 300 мА, 400 мА, 500 мА
modem.controller.voltage Среднее рабочее напряжение (мВ) контроллера модема. -
wifi.controller.idle Среднее потребление тока (мА) контроллера Wi-Fi в режиме ожидания. - Эти значения не являются приблизительными, а взяты из техпаспорта контроллера. Если имеется несколько состояний приема или передачи, берется среднее из этих состояний.
wifi.controller.rx Среднее потребление тока (мА) контроллера Wi-Fi при приеме. -
wifi.controller.tx Среднее потребление тока (мА) контроллера Wi-Fi при передаче. -
wifi.controller.voltage Среднее рабочее напряжение (мВ) контроллера Wi-Fi. -
cpu.speeds Это многозначная запись, в которой перечислены все возможные скорости ЦП в кГц. 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.