Medir 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, usa hardware que mida la energía que usa el dispositivo y realiza las diversas operaciones para las que se necesita información. 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 agotamiento de la batería de forma adecuada, los valores del perfil de energía se proporcionan en corriente (amperios). El framework de Android умножает 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 que consume la app 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 CPUs heterogéneas

El perfil de energía de los 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).
  • Velocidades de CPU compatibles con cada clúster
  • Consumo de energía de la CPU activa 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. 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 framework de Android usa estos números de núcleos de CPU cuando lee estadísticas de los archivos sysfs en /sys/devices/system/cpu/cpu<number>/cpufreq/stats.

Ejemplo de CPUs 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 de valores de energía disponibles. Para ver archivo de muestra en el AOSP, consulta power_profile.xml.

Name Descripción Valor de ejemplo Notas
ambiente.activado Energía adicional utilizada 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 0 de brillo, no el mínimo de Android, que suele ser del 10 o 20%.
screen.full Es la energía adicional que se usa cuando la pantalla está en el brillo máximo, en comparación con la pantalla en el brillo mínimo. De 100 mA a 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 -
wifi.active Es la energía adicional que se usa cuando se transmite o recibe contenido a través de Wi-Fi. 31 mA -
wifi.scan Es la energía adicional que se usa cuando el Wi-Fi busca 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 Energía adicional que se usa cuando se decodifica video a través de DSP. alrededor de 50 mA Se usa para video DSP.
camera.avg Uso de energía promedio del subsistema de la cámara para una cámara típica . 600 mA Se trata de una estimación aproximada para una app que ejecuta una vista previa y captura aproximadamente 10 imágenes de resolución completa 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, uno por intensidad de señal, de la más débil a la más fuerte. 30 mA, 10 mA -
gps.on Energía adicional utilizada cuando el GPS está adquiriendo señal. 50 mA -
radio.active Es la energía adicional que se usa cuando la radio celular transmite o recibe. Entre 100 mA y 300 mA -
radio.scanning Es la energía adicional que se usa cuando la radio celular envía una página a la torre. 1.2 mA -
radio.activa Es la energía adicional que se usa 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 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 Es la cantidad promedio de corriente (mA) que consume el controlador Bluetooth cuando está inactivo. - Estos valores no se estiman, sino que se toman de la hoja de datos del controlador. Si hay varios estados de recepción o transmisión, el promedio de esos estados. Además, el sistema ahora recopila datos para análisis de bajo consumo (LE) y Bluetooth.

Android 7.0 y versiones posteriores ya no usan los valores de energía de Bluetooth para bluetooth.active (se usa cuando se reproduce audio a través de Bluetooth A2DP) y bluetooth.on (se usa cuando Bluetooth está activado, pero inactivo).
bluetooth.controller.rx Es la cantidad de corriente promedio (mA) que consume el controlador Bluetooth cuando recibe. -
Bluetooth.controlador.tx Es la cantidad de corriente promedio (mA) que consume el controlador Bluetooth durante la transmisión. -
bluetooth.controller.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, se admite especificar un valor para cada uno a partir de Android 9.
modem.controller.idle Es la absorción de corriente promedio (mA) del controlador de módem cuando está inactivo. -
modem.controller.rx Consumo de corriente promedio (mA) del controlador del módem en la recepción. -
modem.controller.tx Es la cantidad promedio de corriente (mA) que consume el controlador del módem cuando transmite a diferentes niveles de potencia de RF. 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 Es el voltaje de funcionamiento promedio (mV) del controlador del módem. -
wifi.controller.idle Es la cantidad promedio de corriente (mA) que consume el controlador de Wi-Fi cuando está inactivo. - Estos valores no se estiman, sino que se toman de la hoja de datos del controlador. Si hay varios estados de recepción o transmisión, se toma el promedio de esos estados.
wifi.controller.rx Consumo de corriente promedio (mA) del control Wi-Fi durante la recepción. -
wifi.controlador.tx Es la cantidad promedio de corriente (mA) que consume el controlador de Wi-Fi cuando transmite. -
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, 1000000 KHz, 1500,000 KHz La cantidad y el orden de las entradas deben coincidir con 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 energía en tu equipo de medición y elige muestras en las que la CPU tenga el consumo más bajo, y descarta las muestras más altas en las que la CPU salió del estado inactivo.
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. La cantidad y el orden de las entradas corresponden a la cantidad y el orden de las entradas en cpu.speeds.
cpu.clusters.cores Es la cantidad de núcleos que contiene cada clúster de CPU. 4 y 2 Solo es obligatorio para dispositivos con arquitecturas de CPU heterogéneas. La cantidad de entradas y el orden deben coincidir con la cantidad 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 cluster1, y así sucesivamente.
battery.capacity 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.