Medición de valores de potencia

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.