Medir valores de potencia

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

Para determinar los valores de los perfiles de energía, usa hardware que mida la potencia que usa el dispositivo y realizar las distintas operaciones para las que se necesita información adicional. Mide el uso de energía durante esas operaciones y calcula los valores (derivar diferencias de otros usos de energía de referencia, según corresponda).

Como el objetivo de un perfil de energía es estimar el consumo de batería de forma adecuada, los valores del perfil de potencia se proporcionan en corriente (amps). El framework 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 calcular la cantidad de batería que consume la app o el subsistema.

Dispositivos con Bluetooth, módem y controladores de Wi-Fi que ejecuten Android 7.0 y más altos pueden proporcionar valores de potencia 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:

  • Cantidad de CPUs totales por cada clúster (expresada en cpu.clusters.cores).
  • Las velocidades de CPU que admite cada clúster
  • Consumo de energía de CPU activo para cada clúster.

Diferenciar entre el consumo de energía activo de la CPU y las CPU compatibles para los clústeres, agrega el número de clúster al nombre del array. Clúster Los números se asignan en el orden de los núcleos de CPU en el árbol de dispositivos del kernel. Para 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 framework 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 del 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

En la siguiente tabla, se describe la configuración disponible para los valores de energía. Para ver archivo de muestra en el AOSP, consulta power_profile.xml.

Name Descripción Valor de ejemplo Notas
ambiente.activado Energía adicional que se utiliza cuando la pantalla está en modo Descanso/ambiente/siempre encendida en lugar de apagada. alrededor de 100 mA -
pantalla.activada Se utiliza energía adicional cuando la pantalla se enciende con el brillo mínimo 200 mA Incluye control táctil y retroiluminación de pantalla. Con el brillo 0, no el El mínimo de Android, que suele ser del 10 o el 20%
pantalla.completo Energía adicional utilizada cuando la pantalla tiene el brillo máximo en comparación con pantalla con el brillo mínimo. Entre 100 mA y 300 mA Se agrega una fracción de este valor (según el brillo de la pantalla) al screen.on para calcular el uso de energía de la pantalla.
Wi-Fi.activado Se usa energía adicional cuando el Wi-Fi está encendido, pero no recibe. transmitir o escanear. 2 mA -
Wi-Fi.activo Energía adicional que se utiliza cuando transmites o recibes por Wi-Fi. 31 mA -
wifi.scan Se utiliza energía adicional cuando la red Wi-Fi está buscando puntos de acceso. 100 mA -
Audio Potencia adicional utilizada al decodificar o codificar audio a través de la DSP. alrededor de 10 mA Se utiliza para el audio DSP.
video Potencia adicional utilizada cuando se decodifica video a través de DSP. alrededor de 50 mA Se usa para video DSP.
cámara.prom. Uso de energía promedio del subsistema de la cámara para una cámara típica . 600 mA Diseñado como una estimación aproximada para una app que ejecuta una vista previa y capturar aproximadamente 10 fotos en resolución máxima por minuto.
cámara.linterna Potencia promedio utilizada por el módulo de flash de la cámara cuando está encendido. 200 mA -
gps.signalqualitybased Potencia adicional utilizada por el GPS según la intensidad de la señal. Esta es una entrada de varios valores, una por intensidad de señal, de menor a mayor. 30 mA y 10 mA -
gps.on Energía adicional utilizada cuando el GPS está adquiriendo señal. 50 mA -
radio.active Energía adicional utilizada cuando la radio móvil está transmitiendo o recibiendo. Entre 100 mA y 300 mA -
análisis de radio Energía adicional que se usa cuando la radio celular está llamando a la torre. 1.2 mA -
radio.activa Energía adicional utilizada cuando la radio móvil 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 energía cuando buscan una torre de telefonía celular y no detectar una señal. Los valores pueden ser iguales o disminuir a medida que aumenta el indicador. la potencia de los datos. Si proporcionas un solo valor, se usa el mismo valor para todas las de Google Cloud. Si proporcionas dos valores, el primero se usa para sin señal, el el segundo valor se usa para todas las demás fortalezas, y así sucesivamente.
Bluetooth.controlador.idle Consumo de corriente promedio (mA) del control Bluetooth cuando está inactivo. - Estos valores no se estiman, sino que se toman de la hoja de datos de el controlador. Si hay varios estados de recepción o transmisión, el promedio de esos estados. Además, ahora el sistema recopila datos para Análisis de bajo consumo (LE) y Bluetooth.

Android 7.0 y versiones posteriores ya no usan los valores de potencia de Bluetooth para Bluetooth.active (se utiliza cuando se reproduce audio a través de Bluetooth A2DP) y Bluetooth.on (se utiliza cuando Bluetooth está activado, pero inactivo).
Bluetooth.controlador.rx Consumo de corriente promedio (mA) del control Bluetooth durante la recepción. -
Bluetooth.controlador.tx Consumo de corriente promedio (mA) del control Bluetooth durante una transmisión. -
Bluetooth.controlador.voltage Voltaje de funcionamiento promedio (mV) del control Bluetooth. -
módem.controlador.sueño Consumo actual promedio (mA) del controlador del módem cuando está suspendido. 0 mA Estos valores no se estiman, 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, donde se especifica un valor para cada uno de ellos a partir de Android 9.
módem.controlador.idle 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 en la recepción. -
módem.controlador.tx Consumo de corriente promedio (mA) del controlador del módem cuando se transmite a diferente potencia de RF niveles. Esta es una entrada de varios valores con un valor por nivel de potencia de transmisión. 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
módem.controlador.voltage Voltaje de funcionamiento promedio (mV) del controlador del módem. -
wifi.controller.idle Consumo de corriente promedio (mA) del control Wi-Fi cuando está inactivo. - Estos valores no se estiman, sino que se toman de la hoja de datos de el controlador. Si hay varios estados de recepción o transmisión, el promedio de esos estados.
wifi.controlador.rx Consumo de corriente promedio (mA) del control Wi-Fi durante la recepción. -
wifi.controlador.tx Consumo de corriente promedio (mA) del control de Wi-Fi durante la transmisión. -
wifi.controller.voltage Voltaje de funcionamiento promedio (mV) del control Wi-Fi. -
cpu.speeds Esta es una entrada de varios valores que enumera cada velocidad de CPU posible en KHz. 125,000 KHz, 250,000 KHz, 500,000 KHz, 1000,000 KHz, 1500,000 KHz El número y el orden de las entradas deben corresponder a las entradas de mA en cpu.active.
cpu.idle Potencia total que consume el sistema cuando las CPU (y el SoC) están en el sistema el estado de suspensión. 3 mA -
cpu.awake Energía adicional usada cuando las CPU se encuentran en la programación de estado inactivo (bucle inactivo del kernel); no está en estado de suspensión. 50 mA Es posible que tu plataforma tenga más de un estado inactivo en uso con los niveles de consumo de energía elige un estado inactivo representativo durante más tiempo períodos de inactividad del programador (varios milisegundos). Examina el gráfico de potencia en su equipo de medición y elegir muestras donde la CPU esté a su nivel y descarta las muestras más altas en las que la CPU quedó inactiva.
cpu.active Potencia adicional que usan las CPU cuando se ejecutan a diferentes velocidades. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA El valor representa la potencia que usan los rieles de la CPU cuando se ejecuta en diferentes de alta velocidad. Establece la velocidad máxima del kernel para cada una de las velocidades y conexiones permitidas. la CPU a esa velocidad. El número y el orden de las entradas corresponden al y el orden de las entradas en cpu.speeds.
cpu.clusters.cores Cantidad de núcleos que contiene cada clúster de CPU. 4 y 2 Es obligatorio solo para dispositivos con CPU heterogénea. arquitecturas. La cantidad de entradas y el pedido debe coincidir con la cantidad de las 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 cluster1, y así sucesivamente.
capacidad.batería Capacidad total de la batería enmAh. 3,000 mAh -

Búsquedas de bajo consumo (LE) y Bluetooth

En el caso de los dispositivos que ejecutan Android 7.0, el sistema recopila datos para bajo consumo (LE) y el tráfico de red Bluetooth (como RFCOMM y L2CAP), y los asociados estas actividades con la app iniciadora. Las búsquedas de Bluetooth están asociadas con la aplicación que inició el análisis, pero no los análisis por lotes (y están asociadas a la app Bluetooth). Para una app durante N milisegundos, el costo del análisis es de N milisegundos del tiempo rx. y N milisegundos de tiempo tx; todo el tiempo restante del controlador se asigna el tráfico de red o la app de Bluetooth.