Medir la potencia del componente

Para determinar el consumo de energía de cada componente, compara la corriente que consume el dispositivo cuando el componente se encuentra en el estado deseado (por ejemplo, encendido, activo, escaneando) y cuando está apagado. Mide la corriente instantánea promedio dibujada en el dispositivo con una voltaje nominal usando un monitor de energía externo, como una fuente de alimentación de banco o herramientas de supervisión de la batería (como Monsoon Solution Inc., monitor de energía y software de herramientas eléctricas)

Los fabricantes suelen proporcionar información sobre el consumo actual de un componente individual. Usa esta información si representa con precisión la corriente que toma la batería del dispositivo en práctica. Sin embargo, debes validar los valores proporcionados por el fabricante antes de usarlos en tu dispositivo el perfil de energía.

Controla el consumo de energía

Durante la medición, asegúrate de que el dispositivo no tenga conexión a una fuente de carga externa, como como una conexión USB a un host de desarrollo que se usa cuando se ejecuta Android Debug Bridge (adb). El dispositivo en modo de prueba podría extraer corriente del host, lo que disminuye las mediciones en la batería. Evitar USB Conexiones On-The-Go (OTG), ya que el dispositivo OTG podría tomar corriente del dispositivo que se está probando

Sin incluir el componente que se mide, el sistema debería funcionar a un nivel de potencia constante para evitar mediciones imprecisas causadas por cambios en otros componentes. Sistema Las actividades que pueden introducir cambios no deseados en las mediciones de la potencia incluyen:

  • Actividad de recepción, transmisión o búsqueda de datos móviles, Wi-Fi y Bluetooth Cuándo no mide la energía de la radio móvil, configura el dispositivo en modo de avión y habilita el Wi-Fi o el Bluetooth como lo que sea apropiado.
  • Encendido/apagado de la pantalla Los colores que se muestran mientras la pantalla está encendida pueden afectar el consumo de energía en algunas tecnologías de pantalla. Apaga la pantalla cuando se midan los valores de los componentes que no son de pantalla.
  • Suspensión o reanudación del sistema. Un estado de pantalla apagada puede activar la suspensión del sistema. colocar partes del dispositivo en estado de bajo consumo o apagado. Esto puede afectar el consumo de energía de la componente que se mide e introducir grandes variaciones en las lecturas de potencia a medida que el sistema reanuda para enviar alarmas, etc. Para obtener más información, consulta Control del sistema suspender.
  • CPUs que cambian la velocidad y que entran o salen del estado inactivo del programador de bajo consumo. Durante el funcionamiento normal, el sistema realiza ajustes frecuentes a las velocidades de la CPU, la cantidad de Núcleos de la CPU y otros estados del núcleo del sistema, como la velocidad del bus de memoria y los voltajes de los rieles de energía asociados con las CPU y la memoria. Durante las pruebas, estos ajustes afectan las mediciones de energía:
    • Las operaciones de escalamiento de velocidad de la CPU pueden reducir la cantidad de reloj y escalamiento de voltaje de los buses de memoria. y otros componentes centrales del sistema.
    • La actividad de programación puede afectar el porcentaje de tiempo que las CPU invierten en estados inactivos de baja energía. Para obtener más información sobre cómo evitar que estos ajustes ocurran durante las pruebas, consulta Cómo controlar las velocidades de la CPU.

Por ejemplo, Joe Droid quiere calcular el valor screen.on de un dispositivo. Él habilita el modo de avión en el dispositivo, lo ejecuta en un estado actual estable, retiene la CPU de velocidad constante y usa un bloqueo de activación parcial para evitar la suspensión del sistema. Joe enciende el dispositivo apagar la pantalla y realizar una medición (200 mA). Luego, Joe enciende la pantalla del dispositivo como mínimo brillo y realiza otra medición (300 mA). El valor screen.on es 100 mA (300-200).

Nota: Para los componentes que no tienen una forma de onda plana del consumo actual cuando activa (como radio móvil o Wi-Fi), miden la corriente promedio en el tiempo con una fuente de alimentación de supervisión.

Si se usa una fuente de alimentación externa en lugar de la batería del dispositivo, es posible que el sistema debido a un termistor de batería no conectado o pines del indicador de combustible integrado (es decir, una la lectura de la temperatura de la batería o la capacidad restante de la batería podrían apagar el kernel o Android de configuración del sistema). Las baterías falsas pueden proporcionar señales en los pines del termistor o del medidor de combustible que imitan la temperatura y el estado de carga de un sistema normal. También puede proporcionar clientes potenciales convenientes para se conecte a fuentes de alimentación externas. También puedes modificar el sistema para que ignore las datos no válidos de la batería que falta.

Controlar la suspensión del sistema

En esta sección, se describe cómo evitar el estado de suspensión del sistema cuando no quieres que interfiera con otras mediciones y cómo medir el consumo de energía del estado de suspensión del sistema cuando queremos medirlo.

Evita la suspensión del sistema

La suspensión del sistema puede ingresar una variación no deseada en las mediciones de potencia y ubicar los componentes del sistema. en estados de baja energía inapropiados para medir el uso de energía activa. Para evitar que el sistema suspensión mientras la pantalla está apagada, utiliza un bloqueo de activación parcial temporal. Conéctalo con un cable USB el dispositivo a un host de desarrollo y, a continuación, ejecuta el siguiente comando:

adb shell "echo temporary > /sys/power/wake_lock"

Mientras se encuentra en wake_lock, el estado de pantalla apagada no activa una suspensión del sistema. (Recuerda desconectar el cable USB del dispositivo antes de medir el consumo de energía).

Para quitar el bloqueo de activación, haz lo siguiente:

adb shell "echo temporary > /sys/power/wake_unlock"

Medir la suspensión del sistema

Para medir el consumo de energía durante el estado de suspensión del sistema, mide el valor de cpu.idle en el perfil de energía. Antes de realizar la medición:

  • Quita los bloqueos de activación existentes (como se describió anteriormente).
  • Coloca el dispositivo en modo de avión para evitar la actividad simultánea de la radio móvil, podría ejecutarse en un procesador independiente de las partes de SoC que controla el sistema de suspensión.
  • Asegúrate de que el sistema esté en estado de suspensión de la siguiente manera:
    • Confirma que las lecturas actuales se establecen en un valor estable. Las lecturas deben estar dentro de lo esperado rango para el consumo de energía del estado de suspensión del SoC más el consumo de energía del sistema que permanecen encendidos (como el USB PHY).
    • Verificando la salida de la consola del sistema.
    • Observar indicaciones externas del estado del sistema (como una luz LED que se apaga cuando no está en suspender).

Cómo controlar las velocidades de la CPU

Las CPUs activas pueden conectarse o quedar sin conexión, tener sus velocidades de reloj y asociarse voltajes cambiados (posiblemente también afectar las velocidades del bus de memoria y otros estados de alimentación del núcleo del sistema) y puede entrar en estados inactivos de bajo consumo mientras se encuentra en el bucle de inactividad del kernel. Cuando se miden diferentes tipos de CPU estados de potencia para el perfil de energía, evita la varianza del consumo de energía cuando midas otros parámetros. El perfil de energía supone que todas las CPU tienen las mismas velocidades y características de potencia disponibles.

Mientras mides la potencia de la CPU o mantienes constante la potencia de la CPU para hacer otras mediciones, la cantidad de CPU constantes en línea (por ejemplo, tener una CPU en línea y el resto) sin conexión/activada). Mantener todas las CPU, excepto una en la programación inactiva, puede ser un resultados. Detener el framework de Android con adb shell stop puede reducir sobre la programación de actividades.

Debes especificar las velocidades de CPU disponibles para tu dispositivo en el perfil de energía. cpu.speeds entrada. Para obtener una lista de las velocidades de CPU disponibles, ejecuta el siguiente comando:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

Estas velocidades coinciden con las medidas de potencia correspondientes en el valor cpu.active.

En las plataformas donde la cantidad de núcleos en línea afecta el consumo de energía, podría necesitar modificar el controlador o controlador de cpufreq para la plataforma. Compatibilidad con la mayoría de las plataformas controlar la velocidad de la CPU usando el regulador cpufreq del espacio de usuario y usando interfaces sysfs para configurar la velocidad. Por ejemplo, para establecer una velocidad de 200 MHz en un sistema con 1 CPU o todas las CPU que comparten un política de cpufreq común, usa la consola del sistema o el shell de adb para ejecutar los siguientes comandos:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Nota: Los comandos exactos difieren según la implementación de cpufreq de la plataforma.

Estos comandos garantizan que la velocidad nueva no esté fuera de los límites permitidos, la configuran imprimir la velocidad a la que se está ejecutando la CPU (para verificación). Si el estado la velocidad mínima antes de la ejecución es mayor que 200,000, quizás debas revertir el orden de las primeras dos líneas, o volver a ejecutar la primera para disminuir la velocidad mínima antes de estableciendo la velocidad máxima.

Para medir la corriente consumida por una CPU que se ejecuta a distintas velocidades, usa la consola del sistema para colocar la CPU en un bucle vinculado a la CPU con el siguiente comando:

# while true; do true; done

Realiza la medición mientras se ejecuta el bucle.

Algunos dispositivos pueden limitar la velocidad máxima de CPU mientras realizan una regulación térmica debido a una alta medición de temperatura (es decir, después de ejecutar las CPU a altas velocidades durante períodos sostenidos). Presta atención a como la limitación, ya sea usando la salida de la consola del sistema cuando se realizan mediciones o comprobando después de la medición.

Para el valor cpu.awake, mide la energía consumida cuando el sistema no esté en suspender y no ejecutar tareas. La CPU debe estar en un bucle inactivo de programador de bajo consumo. , posiblemente ejecutando una instrucción de espera de evento de ARM o en un estado de bajo consumo específico para SoC con una latencia de salida rápida adecuada para uso inactivo.

Para el valor de cpu.active, mide la energía cuando el sistema no esté en modo de suspensión. no ejecutando tareas. Una CPU (por lo general, la principal) debe ejecutar la tarea, mientras que todas las demás CPU deben estar en estado inactivo.

Mide la potencia de la pantalla

Al medir la energía de la pantalla, asegúrate de que los otros dispositivos estén encendidos normalmente cuando la pantalla esté habilitadas también están activadas. Por ejemplo, si la pantalla táctil y la retroiluminación de la pantalla estuvieran normalmente encendidas cuando la pantalla esté encendida, asegúrate de que estos dispositivos estén encendidos cuando realices mediciones para obtener un ejemplo realista de pantalla sobre el consumo de energía.

Algunas tecnologías de visualización varían en el consumo de energía según los colores que se muestran, lo que hace que que las medidas de potencia varíen considerablemente en función de lo que se muestre en la pantalla en el momento de la de medición. Durante la medición, asegúrate de que la pantalla muestre algo que tenga batería características de una pantalla realista. Apunta entre los extremos de una pantalla totalmente negra (que consume menos energía para algunas tecnologías) y una pantalla completamente blanca. Una opción común es una vista de un horario en la app de calendario, que tiene una combinación de elementos blancos y no blancos.

Mide la pantalla con el brillo mínimo y máximo de la pantalla o la retroiluminación. Para establecer el brillo mínimo, haz lo siguiente:

  • Usa la IU de Android (no se recomienda). Establece la configuración > Brillo de la pantalla hasta el brillo mínimo de la pantalla. Sin embargo, la IU de Android permite configurar el brillo solo en un mínimo de un 10-20% del brillo posible del panel o de la retroiluminación, y no se permite la configuración un brillo tan bajo que la pantalla podría no ser visible sin mucho esfuerzo.
  • Usa un archivo sysfs (recomendado). Si está disponible, usa un archivo sysfs para controlar el brillo del panel hasta el mínimo que admita el hardware.

Además, si el archivo sysfs de la plataforma permite girar el panel LCD, la retroiluminación y pantalla táctil encendida y apagada, usa el archivo para realizar mediciones con la pantalla encendida y apagada. De lo contrario, establecer un bloqueo de activación parcial para que el sistema no se suspenda, luego encender y apagar el la pantalla con el botón de encendido.

Mide la potencia de la red Wi-Fi

Realiza mediciones de Wi-Fi en una red relativamente silenciosa. Evita incorporar trabajo adicional procesar grandes volúmenes de tráfico de transmisión que no están relacionados con la actividad que se mide

El valor wifi.on mide la energía consumida cuando la conexión Wi-Fi está habilitada, pero no transmitir o recibir activamente. Esto a menudo se mide como el delta entre el dibujo actual en estado de suspensión (suspendida) del sistema con Wi-Fi habilitado o inhabilitado

El valor wifi.scan mide la energía consumida durante una búsqueda de Wi-Fi para obtener acceso. puntos. Las aplicaciones pueden activar búsquedas de Wi-Fi usando la clase WifiManager. API de startScan(). También puedes abrir Configuración > Wi-Fi, que lleva a cabo el punto de acceso escanea cada pocos segundos con un salto aparente en el consumo de energía, pero debes restarle el uso la potencia de estas mediciones.

Nota: Utiliza una configuración controlada (como iperf) para generar recepción y transmisión de red tráfico.