4 votos

Relación entre el Uso de la CPU y el Uso de la Batería

Estoy comparando el consumo de recursos de dos aplicaciones de Android.

  • La Aplicación A usa el acelerómetro

  • La Aplicación B utiliza tanto el acelerómetro como el giroscopio

Después de leer estos sensores, estas aplicaciones realizan algún procesamiento en los valores del sensor. Ahora medí su uso de CPU utilizando dumpsys cpuinfo y el comando top. En general, la Aplicación B utiliza de 3 a 4 veces más CPU que la Aplicación A. Los números reales son los siguientes: Estos resultados son para una sola CPU y mi teléfono utiliza una CPU Dual-core 1.2 GHz Cortex-A9 (Samsung Galaxy S2).

Aplicación A (Uso promedio de CPU: 5%)
APP B (Uso promedio de CPU = 20%) 

Luego medí el porcentaje de uso de batería para estas dos aplicaciones. Mantuve el teléfono Android en modo Avión y solo una de estas dos aplicaciones se estaba ejecutando en un momento específico. Después de ejecutarlas durante una hora, obtuve los siguientes resultados:

Nivel de batería restante después de una hora de uso:
Modo inactivo: 99%  
Ejecutando Aplicación A: 96%
Ejecutando Aplicación B: 93%

Esperaba la misma relación con el nivel de batería como observé con el Uso de CPU. También probé estas aplicaciones en un smartwatch (CPU: Quad-core 1.2 GHz Cortex-A7) y observé una diferencia aún más pequeña en el uso de la batería. Los resultados observados para una hora de uso son los siguientes:

Nivel de batería restante después de una hora de uso:
Modo inactivo: 99%  
Ejecutando Aplicación A: 87%
Ejecutando Aplicación B: 85%

Entonces mi pregunta: ¿Por qué la relación del uso de CPU de estas aplicaciones no se refleja en sus niveles de batería restante? ¿O no debería estar el Uso de CPU relacionado linealmente con el uso de la batería? ¿Podría ser que múltiples núcleos estén activos al mismo tiempo, por eso observo una pequeña diferencia entre sus niveles de batería? PS: Uso bloqueo parcial en estas aplicaciones.

1 votos

La frecuencia de la CPU puede jugar un papel aquí. El consumo de energía no es lineal a la frecuencia, y la escalabilidad de la frecuencia depende de la carga. Si B recopila más datos pero tiene que esperarlos con frecuencia, es posible que la escalabilidad de la frecuencia de la CPU no alcance el umbral para la aceleración. -- Esto es, por supuesto, solo una consideración básica de un factor potencial que tiene el potencial de llevar a lo que observas.

0 votos

Está bien.. Mi malentendido. No puedo ayudar con lo que estás preguntando, eso está muy allá de mí. Borrando esa respuesta.

0 votos

Está bien. Espero que haya algún tipo de relación entre los valores de la CPU reportados desde top/dumpsys cpuinfo con la carga de la CPU, pero no puedo encontrar nada al respecto. Es la única forma de explicar la disminución del uso de la CPU cuando la carga de la CPU aumenta. Vamos a ver cómo responden los miembros de la comunidad.

2voto

Guillermo Gomez Puntos 423

En resumen, el consumo de batería depende no solo de la CPU, sino también de cada otra parte de tu dispositivo.

Versión completa. Un SoC consta de CPU, GPU, módem, puente norte, puente sur y RAM (en un chip semiconductor discreto pero empaquetado juntos en la misma carcasa) en conjunto. Además, la batería no solo alimenta el SoC, sino también sensores, pantalla (que suele ser la parte que más consume energía) y antenas de conexión inalámbrica.
Una CPU tiene su propio algoritmo para controlar su potencia y rendimiento, llamado 'governor' (gobernador). Un gobernador radical de CPU tiende a proporcionar un mejor rendimiento de la CPU a costa de un alto consumo de batería, mientras que un gobernador suave intentará reducir el consumo de batería, lo que resulta en un menor rendimiento de la CPU. Lo mismo se aplica a la GPU y otras partes del SoC.
La pantalla suele ser la parte que más consume batería de un dispositivo, y los factores más determinantes de la potencia de una pantalla son el tamaño, la resolución, el brillo y la tecnología (LCD u OLED). Los teléfonos y relojes más baratos utilizan pantallas LCD, mientras que los de gama alta utilizan pantallas OLED, ya que el OLED consume significativamente menos energía que un LCD con las mismas especificaciones.
Un reloj suele tener una capacidad de batería significativamente menor pero una potencia de pantalla no tan pequeña, lo que disminuirá la diferencia de drenaje en sus estadísticas de batería mientras la pantalla está encendida. Además, los sensores utilizados en el teléfono y en el reloj pueden no ser exactamente iguales, lo que causa diversas diferencias.
En resumen, el costo de la batería está determinado por todas las partes de un dispositivo en lugar de solo la CPU. Si otra parte está consumiendo demasiada batería, no podrás encontrar grandes diferencias aunque la potencia de la CPU sea altamente variable.

0 votos

Gracias por la explicación. Mantuve la pantalla apagada en todas estas mediciones porque mi aplicación adquiere el bloqueo parcial. Supongo que el uso de energía de la CPU podría contribuir poco al consumo total de energía, por lo que tal vez por eso no veo las mismas diferencias en el nivel de la batería.

1voto

mattm Puntos 139

Las características de ahorro de energía son un elemento importante para comprender el consumo de energía en un dispositivo Android. La documentación de Android Doze y App Standby describe las características de ahorro de energía introducidas en Android 6 (Marshmallow). Mientras el dispositivo está en modo de letargo, Android retrasa las acciones de la aplicación y reduce el uso de conexiones de red para disminuir el consumo de energía.

Si el dispositivo no está en modo de letargo, consumirá considerablemente más energía que cuando está en modo de letargo. Si tienes una aplicación que mantiene el dispositivo despierto cuando de otro modo no lo estaría, esto hará que otras aplicaciones y comunicaciones consuman más energía. La cantidad de energía consumida directamente por la aplicación puede ser muy pequeña en comparación con el consumo de energía en el estado de letargo.

También hay otras características de ahorro de batería (como el modo de espera), pero no he encontrado documentación tan buena como las descripciones de doze y app standby. Supongo que estas otras características presentan el mismo tipo de características de consumo de energía de encendido/apagado.

0voto

user278518 Puntos 1

El uso de la batería de Android no solo depende del estado de la CPU, sino también del estado del wifi, sensores, bluetooth, etc. Diferentes dispositivos pueden llevar a resultados diferentes. http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/com/android/internal/os/BatteryStatsHelper.java FYI

0voto

Stephen Dolier Puntos 98

. Como se explicó anteriormente. El uso de la batería depende de múltiples factores no solo del CPU.

. En segundo lugar, cuando el dispositivo está en modo de suspensión, consume muy poca batería, mientras que si se utiliza el despertador, se consume más batería. . Según la documentación, es mejor agrupar tareas y ejecutarlas todas de una vez en lugar de llamar al despertador una y otra vez, porque después de que se libera el despertador, el teléfono tarda un tiempo en volver al estado de reposo.

. Por favor, consulta la siguiente documentación

https://developer.android.com/topic/performance/power/

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X