Производители устройств должны предоставить профиль питания компонентов в /frameworks/base/core/res/res/xml/power_profile.xml
.
Чтобы определить значения для профилей мощности, используйте оборудование, которое измеряет мощность, используемую устройством, и выполняет различные операции, для которых необходима информация. Измерьте энергопотребление во время этих операций и вычислите значения (при необходимости получая отличия от других базовых показателей энергопотребления).
Поскольку целью профиля мощности является правильная оценка расхода заряда батареи, значения профиля мощности указываются в токе (амперах). Платформа Android умножает ток на время, в течение которого подсистема была активна, и вычисляет значение мАч, которое затем используется для оценки количества батареи, разряженной приложением/подсистемой.
Устройства с контроллерами Bluetooth, модема и Wi-Fi под управлением Android 7.0 и выше могут предоставлять дополнительные значения мощности, полученные из данных чипсета.
Устройства с гетерогенными ЦП
Профиль мощности для устройств с ядрами ЦП гетерогенной архитектуры должен включать следующие дополнительные поля:
- Общее количество процессоров для каждого кластера (выражается в cpu.clusters.cores).
- Скорости ЦП, поддерживаемые каждым кластером.
- Активное энергопотребление ЦП для каждого кластера.
Чтобы различать активное энергопотребление ЦП и поддерживаемую скорость ЦП для кластеров, добавьте номер кластера к имени массива. Номера кластеров назначаются в порядке ядер ЦП в дереве устройств ядра. Например, в гетерогенной архитектуре с двумя (2) кластерами с четырьмя (4) ядрами:
- cluster0 состоит из cpu0-3
- кластер1 состоит из процессоров 4-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 для расчета энергопотребления экрана. |
Wi-Fi.включен | Дополнительная мощность используется, когда Wi-Fi включен, но не принимает, не передает и не сканирует. | 2 мА | - |
wifi.активный | Дополнительная мощность, используемая при передаче или приеме по Wi-Fi. | 31 мА | - |
wifi.scan | Дополнительная мощность используется, когда 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 мА | - |
радио.включено | Дополнительная мощность используется, когда сотовая связь включена. Это запись с несколькими значениями, по одному на силу сигнала (нет сигнала, слабый, умеренный, сильный). | 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 | Среднее потребление тока (мА) контроллером модема при приеме. | - | |
модем.controller.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 мА | - |
процессор.пробуждение | Дополнительная мощность используется, когда процессоры находятся в состоянии планирования бездействия (цикл бездействия ядра); система не находится в состоянии приостановки системы. | 50 мА | Ваша платформа может иметь более одного состояния простоя с разными уровнями энергопотребления; выберите репрезентативное состояние простоя для более длительных периодов простоя планировщика (несколько миллисекунд). Изучите график энергопотребления на своем измерительном оборудовании и выберите образцы, в которых ЦП потребляет меньше всего энергии, отбрасывая образцы с более высокими значениями, в которых ЦП перешел в состояние простоя. |
процессор.активный | Дополнительная мощность, используемая ЦП при работе на разных скоростях. | 100 мА, 120 мА, 140 мА, 160 мА, 200 мА | Значение представляет мощность, используемую шинами ЦП при работе на разных скоростях. Установите максимальную скорость в ядре для каждой из разрешенных скоростей и привяжите ЦП к этой скорости. Количество и порядок записей соответствуют количеству и порядку записей в cpu.speeds. |
cpu.clusters.cores | Количество ядер, которые содержит каждый кластер ЦП. | 4, 2 | Требуется только для устройств с гетерогенной архитектурой ЦП . Количество записей и порядок должны соответствовать количеству записей кластера для cpu.active и cpu.speeds. Первая запись представляет количество ядер ЦП в кластере 0, вторая запись представляет количество ядер ЦП в кластере 1 и так далее. |
емкость батареи | Общая емкость аккумулятора в мАч. | 3000 мАч | - |
Сканирование с низким энергопотреблением (LE) и Bluetooth
Для устройств под управлением Android 7.0 система собирает данные для сканирования с низким энергопотреблением (LE) и сетевого трафика Bluetooth (например, RFCOMM и L2CAP) и связывает эти действия с инициирующим приложением. Сканирование Bluetooth связано с приложением, которое инициировало сканирование, а пакетное сканирование — нет (а вместо этого связано с приложением Bluetooth). Для приложения, сканирующего в течение N миллисекунд, стоимость сканирования составляет N миллисекунд времени rx и N миллисекунд времени tx; все оставшееся время контроллера отводится под сетевой трафик или приложение Bluetooth.