Mesurer les valeurs de puissance

Les fabricants d'appareils doivent fournir un profil de puissance des composants dans /frameworks/base/core/res/res/xml/power_profile.xml.

Pour déterminer les valeurs des profils d'alimentation, utilisez du matériel qui mesure la puissance utilisée par l'appareil et effectuez les différentes opérations pour lesquelles des informations sont nécessaires. Mesurez la consommation d'énergie pendant ces opérations et calculez les valeurs (en déduisant les différences par rapport à d'autres utilisations de référence de l'énergie, le cas échéant).

L'objectif d'un profil de puissance étant d'estimer correctement la décharge de la batterie, les valeurs du profil de puissance sont exprimées en courant (ampères). Le framework Android multiplie le courant par la durée d'activité du sous-système et calcule la valeur mAh, qui est ensuite utilisée pour estimer la quantité de batterie déchargée par l'application ou le sous-système.

Les appareils équipés de contrôleurs Bluetooth, de modem et Wi-Fi exécutant Android 7.0 ou version ultérieure peuvent fournir des valeurs de puissance supplémentaires obtenues à partir des données du chipset.

Appareils avec des processeurs hétérogènes

Le profil d'alimentation des appareils dont les cœurs de processeur sont d'architecture hétérogène doit inclure les champs supplémentaires suivants :

  • Nombre total de processeurs pour chaque cluster (exprimé en cpu.clusters.cores).
  • Vitesses de processeur compatibles avec chaque cluster.
  • Consommation d'énergie du processeur actif pour chaque cluster.

Pour faire la différence entre la consommation d'énergie du processeur actif et les vitesses de processeur compatibles pour les clusters, ajoutez le numéro du cluster au nom du tableau. Les numéros de cluster sont attribués dans l'ordre des cœurs de processeur dans l'arborescence des périphériques du noyau. Par exemple, dans une architecture hétérogène comportant deux (2) clusters avec quatre (4) cœurs :

  • cluster0 comprend les CPU 0 à 3
  • cluster1 se compose de cpu4-7

Le framework Android utilise ces nombres de cœurs de processeur lorsqu'il lit les statistiques des fichiers sysfs dans : /sys/devices/system/cpu/cpu<number>/cpufreq/stats.

Exemple de processeurs et de vitesses de cluster :

<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>

Valeurs de puissance

Le tableau suivant décrit les paramètres de valeur de puissance disponibles. Pour afficher le fichier exemple dans AOSP, consultez power_profile.xml.

Nom Description Exemple de valeur Notes
ambient.on Consommation d'énergie supplémentaire lorsque l'écran est en mode veille prolongée/ambiant/always-on au lieu d'être éteint. environ 100 mA -
screen.on Puissance supplémentaire utilisée lorsque l'écran est allumé à la luminosité minimale. 200 mA Cela inclut le contrôle tactile et le rétroéclairage de l'écran. à 0 % de luminosité, et non à la luminosité minimale d'Android, qui est généralement de 10 % ou 20 %.
screen.full Puissance supplémentaire utilisée lorsque la luminosité de l'écran est maximale, par rapport à la luminosité minimale. 100 mA à 300 mA Une fraction de cette valeur (basée sur la luminosité de l'écran) est ajoutée à la valeur screen.on pour calculer la consommation d'énergie de l'écran.
wifi.on Puissance supplémentaire utilisée lorsque le Wi-Fi est activé, mais ne reçoit, n'émet ni n'analyse rien. 2 mA -
wifi.active Consommation d'énergie supplémentaire lors de la transmission ou de la réception de données via le Wi-Fi. 31 mA -
wifi.scan Puissance supplémentaire utilisée lorsque le Wi-Fi recherche des points d'accès. 100 mA -
audio Puissance supplémentaire utilisée lors du décodage/encodage audio via le DSP. environ 10 mA Utilisé pour l'audio DSP.
vidéo Puissance supplémentaire utilisée lors du décodage vidéo via le DSP. environ 50 mA Utilisé pour les vidéos DSP.
camera.avg Consommation électrique moyenne du sous-système de caméras pour une application d'appareil photo typique. 600 mA Il s'agit d'une estimation approximative pour une application exécutant un aperçu et capturant environ 10 photos en pleine résolution par minute.
camera.flashlight Puissance moyenne utilisée par le module du flash de l'appareil photo lorsqu'il est allumé. 200 mA -
gps.signalqualitybased Puissance supplémentaire utilisée par le GPS en fonction de l'intensité du signal. Il s'agit d'une entrée à valeurs multiples, une par intensité du signal, de la plus faible à la plus forte. 30 mA, 10 mA -
gps.on Puissance supplémentaire utilisée lorsque le GPS acquiert un signal. 50 mA -
radio.active Puissance supplémentaire utilisée lorsque l'émetteur-récepteur mobile transmet/reçoit des données. 100 mA à 300 mA -
radio.scanning Puissance supplémentaire utilisée lorsque le signal de cellule GSM interroge la tour. 1,2 mA -
radio.on Puissance supplémentaire utilisée lorsque le signal de cellule GSM est activé. Il s'agit d'une entrée à valeurs multiples, une par intensité du signal (aucun signal, faible, modéré, fort). 1,2 mA Certaines radios augmentent la puissance lorsqu'elles recherchent une antenne-relais et ne détectent aucun signal. Les valeurs peuvent être identiques ou diminuer à mesure que l'intensité du signal augmente. Si vous ne fournissez qu'une seule valeur, elle sera utilisée pour toutes les intensités. Si vous fournissez deux valeurs, la première est utilisée pour l'absence de signal, la deuxième pour toutes les autres intensités, et ainsi de suite.
bluetooth.controller.idle Consommation de courant moyenne (mA) du contrôleur Bluetooth lorsqu'il est inactif. - Ces valeurs ne sont pas estimées, mais proviennent de la fiche technique du contrôleur. S'il existe plusieurs états de réception ou de transmission, la moyenne de ces états est prise en compte. De plus, le système collecte désormais des données pour les scans Bluetooth et à basse consommation (LE).

Android 7.0 et versions ultérieures n'utilisent plus les valeurs de puissance Bluetooth pour bluetooth.active (utilisé lors de la lecture audio via Bluetooth A2DP) et bluetooth.on (utilisé lorsque le Bluetooth est activé, mais inactif).
bluetooth.controller.rx Tirage de courant moyen (mA) du contrôleur Bluetooth lors de la réception. -
bluetooth.controller.tx Tirage de courant moyen (mA) du contrôleur Bluetooth lors de la transmission. -
bluetooth.controller.voltage Tension de fonctionnement moyenne (mV) du contrôleur Bluetooth. -
modem.controller.sleep Tirage de courant moyen (mA) du contrôleur de modem en mode veille. 0 mA Ces valeurs ne sont pas des estimations, mais sont tirées de la fiche technique du contrôleur. S'il existe plusieurs états de réception, la moyenne de ces états est calculée. Si plusieurs états de transmission sont disponibles, il est possible de spécifier une valeur pour chacun d'eux à partir d'Android 9.
modem.controller.idle Tirage de courant moyen (mA) du contrôleur de modem à l'état inactif. -
modem.controller.rx Tirage de courant moyen (mA) du contrôleur de modem lors de la réception. -
modem.controller.tx Tirage de courant moyen (mA) du contrôleur de modem lors de la transmission à différents niveaux de puissance RF. Il s'agit d'une entrée à valeurs multiples, avec une valeur par niveau de puissance d'émission. 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
modem.controller.voltage Tension de fonctionnement moyenne (mV) du contrôleur de modem. -
wifi.controller.idle Tirage de courant moyen (mA) du contrôleur Wi-Fi à l'état inactif. - Ces valeurs ne sont pas estimées, mais proviennent de la fiche technique du contrôleur. S'il existe plusieurs états de réception ou de transmission, la moyenne de ces états est prise en compte.
wifi.controller.rx Tirage de courant moyen (mA) du contrôleur Wi-Fi lors de la réception. -
wifi.controller.tx Tirage de courant moyen (mA) du contrôleur Wi-Fi lors de la transmission. -
wifi.controller.voltage Tension de fonctionnement moyenne (mV) du contrôleur Wi-Fi. -
cpu.speeds Il s'agit d'une entrée à valeurs multiples qui liste chaque vitesse de processeur possible en kHz. 125 000 kHz, 250 000 kHz, 500 000 kHz, 1 000 000 kHz, 1 500 000 kHz Le nombre et l'ordre des entrées doivent correspondre aux entrées mA dans cpu.active.
cpu.idle Puissance totale consommée par le système lorsque les processeurs (et le SoC) sont en état de suspension du système. 3 mA -
cpu.awake Puissance supplémentaire utilisée lorsque les processeurs sont en état d'inactivité de planification (boucle d'inactivité du noyau) ; le système n'est pas en état de suspension du système. 50 mA Votre plate-forme peut utiliser plusieurs états inactifs avec différents niveaux de consommation d'énergie. Choisissez un état inactif représentatif pour les périodes d'inactivité du planificateur plus longues (plusieurs millisecondes). Examinez le graphique de puissance sur votre équipement de mesure et choisissez les échantillons où le processeur est à sa consommation la plus faible, en écartant les échantillons plus élevés où le processeur est sorti de l'état inactif.
cpu.active Puissance supplémentaire utilisée par les processeurs lorsqu'ils fonctionnent à différentes vitesses. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA La valeur représente la puissance utilisée par les rails du processeur lorsqu'il fonctionne à différentes vitesses. Définissez la vitesse maximale dans le noyau sur chacune des vitesses autorisées et fixez le processeur à cette vitesse. Le nombre et l'ordre des entrées correspondent au nombre et à l'ordre des entrées dans cpu.speeds.
cpu.clusters.cores Nombre de cœurs que contient chaque cluster de processeurs. 4, 2 Obligatoire uniquement pour les appareils dotés d'architectures de processeur hétérogènes. Le nombre d'entrées et l'ordre doivent correspondre au nombre d'entrées de cluster pour cpu.active et cpu.speeds. La première entrée représente le nombre de cœurs de processeur dans cluster0, la deuxième entrée représente le nombre de cœurs de processeur dans cluster1, et ainsi de suite.
battery.capacity Capacité totale de la batterie en mAh. 3 000 mAh -

Scans Bluetooth et Low Energy (LE)

Pour les appareils équipés d'Android 7.0, le système collecte les données des analyses Bluetooth à basse consommation (LE, Low Energy) et du trafic réseau Bluetooth (comme RFCOMM et L2CAP), et associe ces activités à l'application qui les a déclenchées. Les analyses Bluetooth sont associées à l'application qui les a déclenchées, mais pas les analyses par lot (qui sont associées à l'application Bluetooth). Pour une application qui recherche des appareils pendant N millisecondes, le coût de la recherche est de N millisecondes de temps de réception et de N millisecondes de temps de transmission. Tout le temps de contrôleur restant est attribué au trafic réseau ou à l'application Bluetooth.