Medir valores de potencia

Los fabricantes de dispositivos deben proporcionar un perfil de energía de componente en /frameworks/base/core/res/res/xml/power_profile.xml .

Para determinar los valores de los perfiles de energía, utilice 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).

Como el objetivo de un perfil de energía es estimar adecuadamente el consumo de la batería, los valores del perfil de energía se dan 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 o el subsistema.

Los dispositivos con controladores Bluetooth, módem y Wi-Fi que ejecutan Android 7.0 y versiones posteriores pueden proporcionar valores de energía adicionales obtenidos de los datos del chipset.

Dispositivos con CPU heterogéneas

El perfil de energía 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 admitidas por cada clúster.
  • Consumo de energía de 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 del 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) clusters con cuatro (4) núcleos:

  • cluster0 consta de cpu0-3
  • cluster1 consta de cpu4-7

El marco de Android utiliza 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.on Se utiliza energía adicional cuando la pantalla está en modo dormido/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. 200 mA Incluye controlador táctil y retroiluminación de pantalla. A 0 de brillo, no el mínimo de Android que suele ser del 10 o 20%.
pantalla.completa Se utiliza energía adicional cuando la pantalla tiene el brillo máximo, en comparación con la pantalla con el brillo mínimo. 100mA-300mA 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.encendido Se utiliza energía adicional cuando Wi-Fi está encendido pero no recibe, transmite ni escanea. 2 mA -
wifi.activo Energía adicional utilizada al transmitir o recibir a través de Wi-Fi. 31mA -
wifi.escanear Se utiliza energía adicional cuando Wi-Fi busca puntos de acceso. 100 mA -
audio Se utiliza energía adicional al decodificar/codificar audio a través de DSP. alrededor de 10 mA Utilizado para audio DSP.
video Se utiliza energía adicional al decodificar video a través de DSP. alrededor de 50 mA Utilizado 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. 600 mA 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.
camara.linterna Potencia promedio utilizada por el módulo de flash de la cámara cuando está encendido. 200 mA -
gps.basado en calidad de señal Energía adicional utilizada por el GPS según la intensidad de la señal. Esta es una entrada de valores múltiples, uno por intensidad de señal, del más débil al más fuerte. 30 mA, 10 mA -
gps.en Energía adicional utilizada cuando el GPS adquiere una señal. 50 mA -
radioactivo Energía adicional utilizada cuando la radio celular está transmitiendo/recibiendo. 100mA-300mA -
escaneo.de.radio Se utiliza energía adicional cuando la radio celular busca la torre. 1,2 mA -
radio.on Energía adicional utilizada cuando la radio celular está encendida. Esta es una entrada de múltiples 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 de telefonía celular y no detectan una señal. Los valores pueden ser los mismos o disminuir al aumentar la intensidad de la señal. Si proporciona solo un valor, se utilizará el mismo valor para todas las intensidades. 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.
controlador.bluetooth.inactivo Consumo de corriente promedio (mA) del controlador Bluetooth cuando está inactivo. - Estos valores no son estimados, sino que se toman 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á activado 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. -
voltaje.del.controlador.bluetooth Voltaje de funcionamiento promedio (mV) del controlador Bluetooth. -
módem.controlador.suspensión Consumo de corriente promedio (mA) del controlador del módem cuando está dormido. 0mA Estos valores no son estimados, sino que se toman de la hoja de datos del controlador. Si hay varios estados de recepción, se toma el promedio de esos estados. Si hay varios estados de transmisión, se admite la especificación de un valor para cada estado de transmisión a partir de Android 9.
módem.controlador.inactivo Consumo de corriente promedio (mA) del controlador del módem cuando está inactivo. -
módem.controlador.rx Consumo de corriente promedio (mA) del controlador del módem al recibir. -
módem.controlador.tx Consumo de corriente promedio (mA) del controlador del módem cuando se 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
voltaje.del.controlador.del.módem Voltaje de funcionamiento promedio (mV) del controlador del módem. -
controlador.wifi.inactivo Consumo de corriente promedio (mA) del controlador Wi-Fi cuando está inactivo. - Estos valores no son estimados, sino que se toman 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. -
voltaje.del.controlador.wifi Voltaje de funcionamiento promedio (mV) del controlador Wi-Fi. -
velocidades.cpu Esta es una entrada de valores múltiples que enumera cada velocidad posible de la CPU en KHz. 125000 kilociclos, 250000 kilociclos, 500000 kilociclos, 1000000 kilociclos, 1500000 kilociclos El número y orden de las entradas deben corresponder a las entradas de mA en cpu.active.
cpu.inactivo Energía total consumida por el sistema cuando las CPU (y el SoC) están en estado de suspensión del sistema. 3mA -
cpu.despierto Se utiliza energía adicional 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. 50 mA Es posible que su plataforma tenga 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 prolongados de inactividad del programador (varios milisegundos). Examine el gráfico de potencia de su equipo de medición y elija muestras donde la CPU tenga su menor consumo, descartando muestras más altas donde la CPU salió inactiva.
cpu.activo Energía adicional utilizada por las CPU cuando funcionan a diferentes velocidades. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA El valor representa la potencia utilizada por los rieles de la CPU cuando funcionan a diferentes velocidades. Establezca la velocidad máxima en el kernel a cada una de las velocidades permitidas y fije la CPU a esa velocidad. El número y orden de las entradas corresponden al número y orden de las entradas en cpu.speeds.
cpu.clusters.núcleos Número de núcleos que contiene cada clúster de CPU. 4, 2 Requerido sólo para dispositivos con arquitecturas de CPU heterogéneas . El número de entradas y el orden deben coincidir con el número de entradas del 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. 3000mAh -

Escaneos 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 (y en cambio, 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 de recepción y N milisegundos de tiempo de transmisión; todo el tiempo sobrante del controlador se asigna al tráfico de red o a la aplicación Bluetooth.