Производители устройств должны предоставить профиль мощности компонента в /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.