Los fabricantes de dispositivos deben proporcionar un perfil de energía del componente en /frameworks/base/core/res/res/xml/power_profile.xml
.
Para determinar los valores de los perfiles de energía, use hardware que mida la energía que utiliza el dispositivo y realice las diversas operaciones para las que se necesita información. Mida el uso de energía durante esas operaciones y calcule los valores (derivando las diferencias de otros usos de energía de referencia, según corresponda).
Dado que el objetivo de un perfil de potencia es estimar adecuadamente el consumo de batería, los valores del perfil de potencia se proporcionan en corriente (amperios). El marco de Android multiplica la corriente por el tiempo durante el cual el subsistema estuvo activo y calcula el valor de mAh, que luego se usa para estimar la cantidad de batería consumida por la aplicación/subsistema.
Los dispositivos con controladores de Bluetooth, módem y Wi-Fi que ejecutan Android 7.0 y superior pueden proporcionar valores de potencia adicionales obtenidos de los datos del conjunto de chips.
Dispositivos con CPU heterogéneas
El perfil de potencia para dispositivos con núcleos de CPU de arquitectura heterogénea debe incluir los siguientes campos adicionales:
- Número de CPU totales para cada clúster (expresado en cpu.clusters.cores).
- Velocidades de CPU compatibles con cada clúster.
- Consumo de energía de la CPU activa para cada clúster.
Para diferenciar entre el consumo de energía de la CPU activa y las velocidades de CPU admitidas para los clústeres, agregue el número de clúster al nombre de la matriz. Los números de clúster se asignan en el orden de los núcleos de CPU en el árbol de dispositivos del kernel. Por ejemplo, en una arquitectura heterogénea que tiene dos (2) clústeres con cuatro (4) núcleos:
- cluster0 consta de cpu0-3
- cluster1 consta de cpu4-7
El marco de trabajo de Android usa estos números de núcleo de CPU cuando lee estadísticas de los archivos sysfs
en: /sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Ejemplo de CPU y velocidades de clúster:
<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>
Valores de potencia
La siguiente tabla describe las configuraciones de valores de energía disponibles. Para ver el archivo de muestra en AOSP, consulte power_profile.xml .
Nombre | Descripción | Valor de ejemplo | notas |
---|---|---|---|
ambiente.en | Energía adicional utilizada cuando la pantalla está en modo inactivo/ambiente/siempre encendida en lugar de apagada. | alrededor de 100 mA | - |
pantalla en | Se utiliza energía adicional cuando la pantalla se enciende con el brillo mínimo. | 200mA | Incluye controlador táctil y retroiluminación de pantalla. A 0 brillo, no el mínimo de Android que suele ser del 10 o 20%. |
pantalla.llena | Energía adicional utilizada cuando la pantalla tiene el brillo máximo, en comparación con la pantalla con el brillo mínimo. | 100 mA-300 mA | Una fracción de este valor (basado en el brillo de la pantalla) se agrega al valor screen.on para calcular el uso de energía de la pantalla. |
wifi.en | Energía adicional utilizada cuando Wi-Fi está encendido pero no recibe, transmite o escanea. | 2mA | - |
wifi.activo | Energía adicional utilizada al transmitir o recibir a través de Wi-Fi. | 31mA | - |
wifi.escanear | Energía adicional utilizada cuando Wi-Fi está buscando puntos de acceso. | 100mA | - |
audio | Energía adicional utilizada cuando se decodifica/codifica audio a través de DSP. | alrededor de 10 mA | Se utiliza para audio DSP. |
video | Energía adicional utilizada cuando se decodifica video a través de DSP. | alrededor de 50 mA | Se utiliza para vídeo DSP. |
cámara.promedio | Uso de energía promedio por parte del subsistema de la cámara para una aplicación de cámara típica. | 600mA | Diseñado como una estimación aproximada para una aplicación que ejecuta una vista previa y captura aproximadamente 10 imágenes de resolución completa por minuto. |
cámara.linterna | Potencia media utilizada por el módulo de flash de la cámara cuando está encendido. | 200mA | - |
gps.signalqualitybased | Energía adicional utilizada por el GPS según la intensidad de la señal. Esta es una entrada de varios valores, uno por intensidad de señal, desde el más débil hasta el más fuerte. | 30mA, 10mA | - |
gps en | Energía adicional utilizada cuando el GPS adquiere una señal. | 50mA | - |
radioactivo | Energía adicional utilizada cuando la radio celular está transmitiendo/recibiendo. | 100 mA-300 mA | - |
escaneo de radio | Energía adicional utilizada cuando la radio celular busca la torre. | 1,2 mA | - |
radio.en | Energía adicional utilizada cuando la radio celular está encendida. Esta es una entrada de varios valores, uno por intensidad de señal (sin señal, débil, moderada, fuerte). | 1,2 mA | Algunas radios aumentan la potencia cuando buscan una torre celular y no detectan una señal. Los valores pueden ser iguales o disminuir al aumentar la intensidad de la señal. Si proporciona solo un valor, se utiliza el mismo valor para todas las concentraciones. Si proporciona dos valores, el primero se usa para ausencia de señal, el segundo valor se usa para todas las demás intensidades, y así sucesivamente. |
bluetooth.controlador.inactivo | Consumo de corriente promedio (mA) del controlador Bluetooth cuando está inactivo. | - | Estos valores no son estimados, sino tomados de la hoja de datos del controlador. Si hay múltiples estados de recepción o transmisión, se toma el promedio de esos estados. Además, el sistema ahora recopila datos para escaneos de baja energía (LE) y Bluetooth . Android 7.0 y versiones posteriores ya no usan los valores de potencia de Bluetooth para bluetooth.active (usado cuando se reproduce audio a través de Bluetooth A2DP) y bluetooth.on (usado cuando Bluetooth está encendido pero inactivo). |
bluetooth.controlador.rx | Consumo de corriente promedio (mA) del controlador Bluetooth al recibir. | - | |
bluetooth.controlador.tx | Consumo de corriente promedio (mA) del controlador Bluetooth al transmitir. | - | |
bluetooth.controller.voltaje | Tensión de funcionamiento media (mV) del controlador Bluetooth. | - | |
modem.controller.sleep | Consumo de corriente promedio (mA) del controlador de módem cuando está dormido. | 0mA | Estos valores no son estimados, sino tomados de la hoja de datos del controlador. Si hay múltiples estados de recepción, se toma el promedio de esos estados. Si hay varios estados de transmisión, se admite especificar un valor para cada estado de transmisión a partir de Android 9. |
módem.controlador.inactivo | Consumo de corriente promedio (mA) del controlador de módem cuando está inactivo. | - | |
módem.controlador.rx | Consumo de corriente promedio (mA) del controlador de módem al recibir. | - | |
módem.controlador.tx | Consumo de corriente promedio (mA) del controlador de módem cuando transmite a diferentes niveles de potencia de RF. Esta es una entrada de valores múltiples con un valor por nivel de potencia de transmisión. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
módem.controlador.voltaje | Voltaje de operación promedio (mV) del controlador de módem. | - | |
wifi.controlador.inactivo | Consumo de corriente promedio (mA) del controlador Wi-Fi cuando está inactivo. | - | Estos valores no son estimados, sino tomados de la hoja de datos del controlador. Si hay múltiples estados de recepción o transmisión, se toma el promedio de esos estados. |
wifi.controlador.rx | Consumo de corriente promedio (mA) del controlador Wi-Fi al recibir. | - | |
wifi.controlador.tx | Consumo de corriente promedio (mA) del controlador Wi-Fi al transmitir. | - | |
wifi.controller.voltaje | Voltaje promedio de operación (mV) del controlador Wi-Fi. | - | |
cpu.velocidades | Esta es una entrada de varios valores que enumera cada posible velocidad de CPU en KHz. | 125000 kilociclos, 250000 kilociclos, 500000 kilociclos, 1000000 kilociclos, 1500000 kilociclos | El número y orden de las entradas debe corresponder a las entradas de mA en cpu.active. |
cpu.inactivo | Potencia total consumida por el sistema cuando las CPU (y el SoC) están en estado de suspensión del sistema. | 3mA | - |
cpu.despierta | Energía adicional utilizada cuando las CPU están en estado inactivo de programación (bucle inactivo del kernel); el sistema no está en estado de suspensión del sistema. | 50mA | Su plataforma puede tener más de un estado inactivo en uso con diferentes niveles de consumo de energía; elija un estado inactivo representativo para períodos más largos de inactividad del programador (varios milisegundos). Examine el gráfico de energía en su equipo de medición y elija muestras en las que la CPU esté en su consumo más bajo, descartando muestras más altas en las que la CPU esté inactiva. |
cpu.activo | Energía adicional utilizada por las CPU cuando se ejecutan a diferentes velocidades. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | El valor representa la energía utilizada por los rieles de la CPU cuando se ejecuta a diferentes velocidades. Establezca la velocidad máxima en el kernel en cada una de las velocidades permitidas y fije la CPU a esa velocidad. El número y orden de las entradas corresponde al número y orden de las entradas en cpu.speeds. |
cpu.clusters.cores | Número de núcleos que contiene cada clúster de CPU. | 4, 2 | Requerido solo para dispositivos con arquitecturas de CPU heterogéneas . El número de entradas y el orden deben coincidir con el número de entradas de clúster para cpu.active y cpu.speeds. La primera entrada representa la cantidad de núcleos de CPU en el clúster0, la segunda entrada representa la cantidad de núcleos de CPU en el clúster1 y así sucesivamente. |
capacidad de la batería | Capacidad total de la batería en mAh. | 3000 mAh | - |
Exploraciones de baja energía (LE) y Bluetooth
Para dispositivos que ejecutan Android 7.0, el sistema recopila datos para escaneos de bajo consumo (LE) y tráfico de red Bluetooth (como RFCOMM y L2CAP) y asocia estas actividades con la aplicación de inicio. Los escaneos de Bluetooth están asociados con la aplicación que inició el escaneo, pero los escaneos por lotes no lo están (y en su lugar están asociados con la aplicación de Bluetooth). Para una aplicación que escanea durante N milisegundos, el costo del escaneo es N milisegundos de tiempo rx y N milisegundos de tiempo tx; todo el tiempo sobrante del controlador se asigna al tráfico de red o a la aplicación Bluetooth.