4 votes

Relation entre l'utilisation du CPU et l'utilisation de la batterie

Je compare la consommation de ressources de deux applications Android.

  • L'application A utilise l'accéléromètre

  • L'application B utilise à la fois l'accéléromètre et le gyroscope.

Après avoir lu ces capteurs, ces applications effectuent un traitement sur les valeurs des capteurs. Maintenant j'ai mesuré leur utilisation du CPU en utilisant dumpsys cpuinfo ainsi que la commande top. En général, l'application B utilise 3-4 fois plus de CPU que l'application A. Les chiffres réels sont les suivants : Ces résultats pour un seul CPU et mon téléphone utilise un CPU Dual-core 1.2 GHz Cortex-A9 (Samsung Galaxy S2).

App A (Average CPU Usage: 5%)
APP B (Average CPU Usage = 20%) 

J'ai ensuite mesuré le pourcentage d'utilisation de la batterie pour ces deux applications. J'ai laissé le téléphone Android en mode avion et une seule de ces deux applications était en cours d'exécution à un moment donné. Après les avoir fait tourner pendant une heure, j'ai obtenu les résultats suivants :

Remaining battery level after one hour of use:
Idle mode: 99%  
Running App A: 96%
Running App B: 93%

Je m'attendais au même rapport avec ces niveaux de batterie que celui que j'ai observé avec l'utilisation du CPU. J'ai également testé ces applications sur une smartwatch (CPU : Quad-core 1.2 GHz Cortex-A7) et j'ai observé une différence encore plus faible entre l'utilisation de la batterie. Les résultats observés pour une utilisation d'une heure sont les suivants :

Remaining battery level after one hour of use:
Idle mode: 99%  
Running App A: 87%
Running App B: 85%

Donc ma question : Pourquoi le ratio de l'utilisation du CPU pour ces applications n'est pas reflété dans leurs niveaux de batterie restants ? Ou bien l'utilisation du CPU ne devrait-elle pas être linéairement liée à l'utilisation de la batterie ? La raison pourrait-elle être que plusieurs cœurs sont actifs en même temps, c'est pourquoi j'observe une petite différence entre leurs niveaux de batterie ? PS : J'utilise le verrouillage partiel dans ces applications.

2voto

Guillermo Gomez Points 423

Pour faire court, la consommation de la batterie ne dépend pas seulement du processeur, mais aussi de tous les autres éléments de votre appareil.

Version complète. Un SoC se compose d'un CPU, d'un GPU, d'un modem, d'un pont nord, d'un pont sud et d'une RAM (sur une puce semi-conductrice discrète mais regroupée dans la même coque). La batterie alimente non seulement le SoC, mais aussi les capteurs, l'écran (qui est généralement la partie la plus gourmande en énergie) et les antennes de connexion sans fil.
Un CPU possède son propre algorithme pour contrôler sa puissance et ses performances, appelé "gouverneur". Un gouverneur de CPU radical a tendance à fournir de meilleures performances du CPU au prix d'une consommation élevée de la batterie, tandis qu'un gouverneur doux essaiera de réduire la consommation de la batterie, ce qui entraînera une baisse des performances du CPU. Il en va de même pour le GPU et les autres parties du SoC.
L'écran est souvent la partie la plus consommatrice de batterie d'un appareil. Les facteurs les plus déterminants de la puissance d'un écran sont la taille, la résolution, la luminosité et la technologie (LCD ou OLED). Les téléphones et les montres bon marché utilisent des écrans LCD, tandis que les appareils haut de gamme utilisent des écrans OLED, car ces derniers consomment beaucoup moins d'énergie qu'un écran LCD de mêmes spécifications.
Une montre dispose généralement d'une batterie nettement moins puissante, mais d'un écran moins puissant, ce qui réduit la différence d'usure de la batterie lorsque l'écran est allumé. En outre, les capteurs utilisés sur le téléphone et la montre peuvent ne pas être exactement les mêmes, ce qui entraîne diverses différences.
En résumé, le coût de la batterie est déterminé par toutes les parties d'un appareil et non par le seul processeur. Si une autre partie consomme trop de batterie, vous ne trouverez pas de grandes différences, même si la puissance du CPU est très variable.

1voto

mattm Points 4120

Les fonctions d'économie d'énergie sont un élément important pour comprendre la consommation d'énergie d'un appareil Android. La documentation sur Android Doze et App Standby décrit les fonctions d'économie d'énergie introduites dans Android 6 (Marshmallow). Pendant la somnolence, Android retarde les actions des applications et réduit l'utilisation des connexions réseau pour diminuer la consommation d'énergie.

Si l'appareil n'est pas en mode "doze", il consommera beaucoup plus d'énergie que lorsqu'il est en mode "doze". Si vous avez une application qui maintient l'appareil éveillé alors qu'il ne le serait pas autrement, les autres applications et communications consommeront plus d'énergie. La quantité d'énergie directement consommée par l'application peut être très faible par rapport à la consommation d'énergie en mode veille.

Il existe également d'autres fonctions d'économie de la batterie (veille, par exemple), mais je n'ai pas trouvé de documentation aussi bonne que les descriptions de doze et d'app standby. Je suppose que ces autres fonctions présentent le même type de caractéristiques de consommation d'énergie marche/arrêt.

0voto

user278518 Points 1

L'utilisation de la batterie d'Android ne dépend pas seulement de l'état du CPU, mais aussi de l'état du wifi, des capteurs, du bluetooth, etc. Un appareil différent peut donner des résultats différents. http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/com/Android/internal/os/BatteryStatsHelper.java FYI

0voto

Stephen Dolier Points 98

. Comme déjà expliqué. L'utilisation de votre batterie dépend de plusieurs facteurs et pas seulement du CPU.

. Deuxièmement, lorsque l'appareil est en veille, il consomme très peu de batterie, alors que si vous utilisez le verrouillage du réveil, la batterie est plus sollicitée. . Selon la documentation, il est préférable de regrouper les tâches et de les exécuter en une seule fois plutôt que d'appeler le verrouillage de réveil à plusieurs reprises - parce qu'après la libération du verrouillage de réveil, il faut un certain temps pour que le téléphone retourne à l'état de veille.

. Veuillez consulter la documentation suivante

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

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X