Производители устройств должны предоставить профиль мощности компонента в /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 .
Имя | Описание | Пример значения | Примечания |
---|---|---|---|
эмбиент.он | Дополнительная мощность потребляется, когда экран находится в спящем режиме/режиме окружающего освещения/режиме постоянного включения вместо выключенного. | около 100 мА | - |
экран.на | Дополнительная мощность потребляется при включении экрана на минимальной яркости. | 200 мА | Включает сенсорный контроллер и подсветку дисплея. При яркости 0, а не минимуме Android, который обычно составляет 10 или 20%. |
экран.полный | При максимальной яркости экрана потребляется больше энергии, чем при минимальной яркости экрана. | 100 мА-300 мА | Часть этого значения (в зависимости от яркости экрана) добавляется к значению screen.on для расчета энергопотребления экрана. |
wifi.on | Дополнительная мощность потребляется, когда Wi-Fi включен, но не принимает, не передает и не сканирует данные. | 2 мА | - |
wifi.активный | Дополнительная мощность, используемая при передаче или приеме по Wi-Fi. | 31 мА | - |
wifi.сканирование | Дополнительная мощность потребляется при сканировании Wi-Fi точек доступа. | 100 мА | - |
аудио | Дополнительная мощность используется при декодировании/кодировании звука через DSP. | около 10 мА | Используется для DSP-аудио. |
видео | Дополнительная мощность используется при декодировании видео через DSP. | около 50 мА | Используется для DSP-видео. |
камера.средн. | Среднее энергопотребление подсистемы камеры для типичного приложения камеры. | 600 мА | Предполагается, что это приблизительная оценка для приложения, выполняющего предварительный просмотр и делающего около 10 снимков в полном разрешении в минуту. |
камера.фонарик | Средняя мощность, потребляемая модулем вспышки камеры во включенном состоянии. | 200 мА | - |
gps.signalqualitybased | Дополнительная мощность, используемая GPS на основе силы сигнала. Это многозначная запись, по одной на силу сигнала, от самой слабой до самой сильной. | 30 мА, 10 мА | - |
gps.on | Дополнительная мощность используется при приеме сигнала GPS. | 50 мА | - |
радио.активный | Дополнительная мощность, используемая при передаче/приеме сотовой радиосвязи. | 100 мА-300 мА | - |
радио.сканирование | Дополнительная мощность используется при пейджинге сотовой радиостанции на вышке. | 1,2 мА | - |
радио.on | Дополнительная мощность, используемая при включенном сотовом радио. Это многозначная запись, по одной на уровень сигнала (нет сигнала, слабый, умеренный, сильный). | 1,2 мА | Некоторые радиостанции увеличивают мощность, когда ищут вышку сотовой связи и не обнаруживают сигнал. Значения могут быть одинаковыми или уменьшаться с увеличением мощности сигнала. Если указать только одно значение, то оно будет использоваться для всех мощностей. Если указать два значения, то первое будет использоваться для отсутствия сигнала, второе — для всех других мощностей и т. д. |
контроллер.bluetooth.в режиме ожидания | Средний ток потребления (мА) контроллера Bluetooth в режиме ожидания. | - | Эти значения не оцениваются, а берутся из паспорта контроллера. Если есть несколько состояний приема или передачи, берется среднее значение этих состояний. Кроме того, система теперь собирает данные для сканирования Low Energy (LE) и Bluetooth . Android 7.0 и более поздние версии больше не используют значения мощности Bluetooth для bluetooth.active (используется при воспроизведении звука через Bluetooth A2DP) и bluetooth.on (используется, когда Bluetooth включен, но находится в режиме ожидания). |
bluetooth.контроллер.rx | Средний ток потребления (мА) контроллера Bluetooth при приеме. | - | |
bluetooth.контроллер.tx | Средний ток потребления (мА) контроллера Bluetooth при передаче. | - | |
напряжение.контроллера.bluetooth | Среднее рабочее напряжение (мВ) контроллера Bluetooth. | - | |
спящий режим.контроллера.модема | Средний ток потребления (мА) контроллера модема в спящем режиме. | 0 мА | Эти значения не оцениваются, а берутся из паспорта контроллера. Если есть несколько состояний приема, берется среднее значение этих состояний. Если есть несколько состояний передачи, указание значения для каждого состояния передачи поддерживается, начиная с Android 9. |
контроллер.модема.в режиме ожидания | Средний ток потребления (мА) контроллера модема в режиме ожидания. | - | |
модем.контроллер.rx | Средний ток потребления (мА) контроллера модема при приеме. | - | |
модем.контроллер.tx | Средний ток потребления (мА) контроллера модема при передаче на разных уровнях мощности радиочастот. Это многозначная запись с одним значением на уровень мощности передачи. | 100 мА, 200 мА, 300 мА, 400 мА, 500 мА | |
напряжение.контроллера.модема | Среднее рабочее напряжение (мВ) контроллера модема. | - | |
контроллер.wifi.в режиме ожидания | Средний ток потребления (мА) контроллера Wi-Fi в режиме ожидания. | - | Эти значения не оценочные, а взяты из паспорта контроллера. Если есть несколько состояний приема или передачи, берется среднее значение этих состояний. |
контроллер.wifi.rx | Средний ток потребления (мА) контроллера Wi-Fi при приеме. | - | |
wifi.контроллер.tx | Средний ток потребления (мА) контроллера Wi-Fi при передаче. | - | |
напряжение.контроллера.wifi | Среднее рабочее напряжение (мВ) контроллера Wi-Fi. | - | |
скорость процессора | Это многозначная запись, в которой перечислены все возможные значения частоты ЦП в кГц. | 125000 КГц, 250000 КГц, 500000 КГц, 1000000 КГц, 1500000 КГц | Количество и порядок записей должны соответствовать записям мА в cpu.active. |
cpu.idle | Общая мощность, потребляемая системой, когда процессоры (и SoC) находятся в состоянии приостановки работы системы. | 3 мА | - |
cpu.wake | Дополнительная мощность потребляется, когда ЦП находятся в состоянии простоя планирования (цикл простоя ядра); система не находится в состоянии приостановки системы. | 50 мА | Ваша платформа может иметь более одного состояния простоя с различными уровнями энергопотребления; выберите репрезентативное состояние простоя для более длительных периодов простоя планировщика (несколько миллисекунд). Изучите график мощности на вашем измерительном оборудовании и выберите образцы, где ЦП находится на самом низком уровне потребления, отбрасывая более высокие образцы, где ЦП выходил из состояния простоя. |
cpu.активный | Дополнительная мощность, потребляемая процессорами при работе на разных скоростях. | 100 мА, 120 мА, 140 мА, 160 мА, 200 мА | Значение представляет мощность, используемую шинами ЦП при работе на разных скоростях. Установите максимальную скорость в ядре для каждой из разрешенных скоростей и закрепите ЦП на этой скорости. Количество и порядок записей соответствуют количеству и порядку записей в cpu.speeds. |
cpu.clusters.cores | Количество ядер, содержащихся в каждом кластере ЦП. | 4, 2 | Требуется только для устройств с гетерогенной архитектурой ЦП . Количество записей и порядок должны соответствовать количеству записей кластера для cpu.active и cpu.speeds. Первая запись представляет количество ядер ЦП в cluster0, вторая запись представляет количество ядер ЦП в cluster1 и т. д. |
емкость батареи | Общая емкость аккумулятора в мАч. | 3000 мАч | - |
Сканирование с низким энергопотреблением (LE) и Bluetooth
Для устройств под управлением Android 7.0 система собирает данные для сканирований Low Energy (LE) и сетевого трафика Bluetooth (например, RFCOMM и L2CAP) и связывает эти действия с инициирующим приложением. Сканирования Bluetooth связаны с приложением, которое инициировало сканирование, но пакетные сканирования не связаны (и вместо этого связаны с приложением Bluetooth). Для приложения, сканирующего в течение N миллисекунд, стоимость сканирования составляет N миллисекунд времени приема и N миллисекунд времени передачи; все оставшееся время контроллера назначается сетевому трафику или приложению Bluetooth.