Mesurer la puissance des composants

Vous pouvez déterminer la consommation d'énergie de chaque composant en comparant le courant consommé par le appareil lorsque le composant est à l'état souhaité (par exemple, sous tension, actif ou en cours de recherche) et lorsque le est désactivé. Mesurez le courant instantané moyen sur l'appareil à une tension nominale à l'aide d'un moniteur d'alimentation externe, comme une alimentation électrique de banc les outils de surveillance de la batterie (tels que Monsoon Solution Inc. Power Monitor et le logiciel Power Tool).

Les fabricants fournissent souvent des informations sur la consommation actuelle d'un composant individuel. Utilisez ces informations si elles représentent précisément l'utilisation actuelle de la batterie de l'appareil pratique. Vérifiez toutefois les valeurs fournies par le fabricant avant de les utiliser dans votre appareil profil d'alimentation.

Contrôler la consommation d'énergie

Lors des mesures, assurez-vous que l'appareil n'est pas connecté à une source de charge externe, par exemple en tant que connexion USB à un hôte de développement utilisé lors de l'exécution d'Android Debug Bridge (adb). L'appareil en cours de test peut puiser du courant à l'hôte, ce qui diminue les mesures au niveau de la batterie. Éviter l'USB Connexions On-The-Go (OTG), car l'appareil OTG peut utiliser l'appareil testé

En excluant le composant mesuré, le système doit fonctionner à un niveau de puissance constant. pour éviter des mesures inexactes causées par des changements dans d'autres composants. Système Parmi les activités susceptibles d'introduire des changements indésirables dans les mesures de puissance, citons:

  • Réception, transmission ou recherche d'activités mobiles, Wi-Fi et Bluetooth : Quand ? ne mesure pas la puissance du signal radio de la cellule GSM, réglez l'appareil en mode Avion et activez le Wi-Fi ou le Bluetooth approprié.
  • Activer/Désactiver l'écran : Les couleurs affichées lorsque l'écran est allumé peuvent affecter la consommation d'énergie sur certaines technologies d'écran. Éteignez l'écran lorsque vous mesurez des valeurs pour des composants autres que l'écran.
  • Suspension/Reprise du système Un état d'extinction de l'écran peut déclencher une suspension du système, de placer certaines parties de l'appareil dans un état de faible consommation d'énergie ou éteint. Cela peut affecter la consommation d'énergie composant mesuré et introduisent de grandes variations dans les relevés de puissance, car le système pour envoyer des alarmes, etc. Pour en savoir plus, consultez la section suspendre.
  • Les processeurs changent de vitesse et entrent/quittent l'état d'inactivité du programmeur à faible consommation d'énergie. En fonctionnement normal, le système ajuste fréquemment les vitesses du processeur, le nombre d'opérations Cœurs de processeur et autres états du cœur du système, tels que la vitesse du bus de mémoire et les tensions des rails d'alimentation associées aux processeurs et à la mémoire. Pendant les tests, ces ajustements affectent les mesures de la puissance: <ph type="x-smartling-placeholder">
      </ph>
    • Les opérations de scaling de la vitesse du processeur peuvent réduire la quantité de mise à l'échelle de l'horloge et de la tension des bus mémoire et d'autres composants de base du système.
    • L'activité de planification peut avoir une incidence sur le pourcentage de temps passé par les processeurs dans des états d'inactivité à faible consommation d'énergie. Pour savoir comment éviter que ces ajustements n'aient lieu pendant les tests, consultez Contrôler la vitesse du processeur

Par exemple, Joe Droid souhaite calculer la valeur screen.on d'un appareil. Il active le mode Avion sur l'appareil, exécute l'appareil dans un état actuel stable, maintient le processeur constante de vitesse et utilise un wakelock partiel pour empêcher la suspension du système. Joe fait ensuite pivoter l'appareil l'écran s'éteint et prend une mesure (200 mA). Ensuite, Joe allume au minimum l'écran de l'appareil puis effectuer une autre mesure (300 mA). La valeur screen.on est 100 mA (300 à 200).

Remarque: Pour les composants qui n'ont pas de forme d'onde plate pour la consommation de courant (comme une connexion cellulaire ou Wi-Fi), mesurez le courant moyen au fil du temps à l'aide d'une de surveillance.

Si vous utilisez une source d'alimentation externe à la place de la batterie de l'appareil, le système risque de rencontrer dus à une thermistor de batterie non connectée ou à des broches intégrées de la jauge (c'est-à-dire une les relevés de température ou de la capacité restante de la batterie pourraient éteindre le noyau ou Android du système d'exploitation). Les fausses batteries peuvent fournir des signaux sur les broches de thermistor ou de la jauge de carburant qui imitent la température et l'état de charge d'un système normal, et peuvent également fournir des pistes utiles pour à une alimentation externe. Vous pouvez également modifier le système pour ignorer des données non valides provenant de la batterie manquante.

Contrôler la suspension du système

Cette section explique comment éviter la suspension du système lorsque vous ne souhaitez pas qu'il interfère. avec d'autres mesures, et comment mesurer la consommation électrique liée à l'état de suspension du système souhaitez les mesurer.

Empêcher la suspension du système

La suspension du système peut entraîner des variations indésirables des mesures de puissance et placer les composants du système dans un état à faible consommation d'énergie n'est pas adapté à la mesure de la consommation d'énergie active. Pour empêcher le système pendant que l'écran est éteint, utilisez un wakelock partiel temporaire. Connectez-vous à l'aide d'un câble USB l'appareil vers un hôte de développement, puis exécutez la commande suivante:

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

Dans wake_lock, l'état de désactivation de l'écran ne déclenche pas l'arrêt du système. (N'oubliez pas de débrancher le câble USB de l'appareil avant de mesurer la consommation d'énergie.)

Pour supprimer le wakelock:

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

Mesurer la suspension du système

Pour mesurer la consommation électrique pendant l'état de suspension du système, mesurez la valeur de cpu.idle dans le profil d'alimentation. Avant de mesurer:

  • Supprimez les wakelocks existants (comme décrit ci-dessus).
  • Placez l'appareil en mode Avion pour éviter toute activité simultanée du réseau cellulaire, ce qui peut s'exécuter sur un processeur distinct des parties SoC contrôlées par la suspension du système.
  • Pour vous assurer que le système est suspendu: <ph type="x-smartling-placeholder">
      </ph>
    • Confirmation que les relevés actuels se stabilisent à une valeur stable. Les résultats doivent être compris dans les limites pour la consommation d'énergie de l'état de suspension du SoC et la consommation d'énergie du système composants qui restent sous tension (tels que le câble USB PHY).
    • Vérification de la sortie de la console système
    • Surveiller les indications externes de l'état du système (comme un voyant qui s'éteint en dehors de l'appareil) suspendre).

Contrôler la vitesse du processeur

Les processeurs actifs peuvent être mis en ligne ou hors ligne, avoir leurs vitesses d'horloge et du changement de tension (ce qui peut avoir une incidence sur la vitesse du bus mémoire et sur d'autres états de puissance du cœur du système) et peuvent passer à des états d'inactivité à faible puissance dans la boucle d'inactivité du noyau. Lorsque vous mesurez différents CPU pour le profil de puissance, évitez la variance de la consommation électrique lorsque vous mesurez d'autres paramètres. Le profil d'alimentation suppose que tous les processeurs ont les mêmes vitesses et caractéristiques de puissance disponibles.

Lorsque vous mesurez la puissance du processeur ou que vous maintenez la puissance du processeur constante pour effectuer d'autres mesures, constante du nombre de CPU mis en ligne (par exemple, avoir un CPU en ligne et le reste hors connexion/branché à chaud). Conserver tous les processeurs inactifs, à l'exception d'un seul en planification, peut être acceptable résultats. L'arrêt du framework Android avec adb shell stop peut réduire de planification.

Vous devez spécifier les vitesses de processeur disponibles pour votre appareil dans le profil d'alimentation Entrée cpu.speeds. Pour obtenir la liste des vitesses de processeur disponibles, exécutez la commande suivante:

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

Ces vitesses correspondent aux mesures de puissance correspondantes dans la valeur cpu.active.

Pour les plates-formes sur lesquelles le nombre de cœurs mis en ligne affecte considérablement la consommation d'énergie, vous devrez peut-être modifier le pilote cpufreq ou le gouverneur de la plateforme. La plupart des plates-formes sont compatibles en contrôlant la vitesse du processeur à l'aide du gouverneur cpufreq de l'espace utilisateur et en utilisant les interfaces sysfs pour définir la vitesse de chargement. Par exemple, pour définir la vitesse sur 200 MHz sur un système avec un seul CPU ou tous les CPU partageant une cpufreq, utilisez la console système ou le shell adb pour exécuter les commandes suivantes:

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

Remarque: Les commandes exactes varient en fonction de l'implémentation de cpufreq sur la plate-forme.

Ces commandes permettent de s'assurer que la nouvelle vitesse ne dépasse pas les limites autorisées, de la définir, puis imprimer la vitesse à laquelle le processeur fonctionne réellement (pour la vérification). Si le la vitesse minimale avant l'exécution est supérieure à 200 000, vous devrez peut-être inverser l'ordre des deux premières lignes, ou réexécutez la première ligne pour diminuer la vitesse minimale avant pour définir la vitesse maximale.

Pour mesurer le courant consommé par un processeur fonctionnant à différentes vitesses, utilisez la console système pour placer le CPU dans une boucle liée au CPU à l'aide de la commande suivante:

# while true; do true; done

Prenez la mesure pendant l'exécution de la boucle.

Certains appareils peuvent limiter la vitesse maximale du processeur lors de l'exécution de la limitation thermique en raison d'une mesure de température (c'est-à-dire, après avoir exécuté des processeurs à des vitesses élevées pendant des périodes prolongées) ; Prêtez attention aux en utilisant la sortie de la console système lors de la prise de mesures ou en vérifiant le journal du noyau après la mesure.

Pour la valeur cpu.awake, mesurez l'énergie consommée lorsque le système n'est pas dans suspendre et n'exécuter aucune tâche. Le CPU doit se trouver dans une boucle d'inactivité de programmeur à faible consommation énergétique. , ce qui peut exécuter une instruction d'attente d'événement ARM ou un état à faible consommation spécifique au SoC avec une latence de sortie rapide adaptée à une utilisation inactive.

Pour la valeur cpu.active, mesurez l'alimentation lorsque le système n'est pas en mode suspendu. pas l’exécution des tâches. Un CPU (généralement le CPU principal) doit exécuter la tâche tandis que tous les autres CPU doivent exécuter la tâche doit être inactif.

Mesurer la puissance de l'écran

Lorsque l'écran est allumé, assurez-vous que les autres appareils sont normalement allumés lorsque l'écran est allumé sont également activées. Par exemple, si l'écran tactile et le rétroéclairage de l'écran sont normalement activés lorsque l'écran est allumé, assurez-vous que ces appareils sont allumés lors de la mesure afin d'obtenir un exemple réaliste des sur la consommation d'énergie.

La consommation d'énergie de certaines technologies d'affichage varie en fonction des couleurs affichées, ce qui entraîne les mesures de puissance varient considérablement en fonction de ce qui est affiché à l'écran au moment du les mesures. Lors de la mesure, assurez-vous que l'écran affiche un élément alimentant les caractéristiques d'un écran réaliste. Visez entre les extrêmes d'un écran entièrement noir (qui (pour certaines technologies, la consommation d'énergie la plus faible) et un écran entièrement blanc. Un choix courant est une vue d'un planning dans l'application Agenda, avec un arrière-plan blanc et des éléments non blancs.

Mesurez la puissance de l'écran à la luminosité minimale et maximale de l'écran ou du rétroéclairage. Pour définir la luminosité minimale:

  • Utiliser l'interface utilisateur Android (non recommandé) Accédez aux paramètres > Luminosité de l'écran sur la luminosité minimale. Cependant, l'interface utilisateur Android permet de ne définir la luminosité que sur de 10 à 20% de la luminosité de l'écran ou du rétroéclairage possible, et ne permet pas une luminosité si faible que l'écran pourrait ne pas être visible sans trop d'effort.
  • Utilisez un fichier sysfs (recommandé). Si possible, utilisez un fichier sysfs pour contrôler la luminosité de l'écran jusqu'à la luminosité minimale prise en charge par le matériel.

De plus, si le fichier Sysfs de la plate-forme permet de transformer l'écran LCD, le rétroéclairage l'écran tactile, utilisez le fichier pour prendre des mesures avec l'écran allumé et éteint. Sinon, définissez un wakelock partiel pour que le système ne s'arrête pas, puis activez et désactivez le avec le bouton Marche/Arrêt.

Mesurer la puissance d'un réseau Wi-Fi

Effectuez vos mesures Wi-Fi sur un réseau relativement faible. Éviter d'introduire du travail supplémentaire le traitement de volumes élevés de trafic de diffusion sans rapport avec l'activité mesurée.

La valeur wifi.on mesure l'énergie consommée lorsque le Wi-Fi est activé, mais pas en transmettant ou recevoir activement. Il s'agit souvent du delta entre le dessin système suspendu (veille) avec le Wi-Fi activé ou désactivé.

La valeur wifi.scan mesure l'énergie consommée lors d'une recherche Wi-Fi pour l'accès. points. Les applications peuvent déclencher des recherches Wi-Fi à l'aide de la classe WifiManager <ph type="x-smartling-placeholder"></ph> l'API startScan(). Vous pouvez également ouvrir Paramètres > Wi-Fi, qui détermine le point d'accès effectue des analyses toutes les quelques secondes, avec un saut apparent de la consommation d'énergie, mais vous devez soustraire l'écran de ces mesures.

Remarque: Utilisez une configuration contrôlée (par exemple, iperf) pour générer la réception et la transmission du réseau, du trafic.