Mesurer les valeurs de puissance

Les fabricants d'appareils doivent fournir un profil d'alimentation 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 d'alimentation étant d'estimer correctement la décharge de la batterie, les valeurs du profil d'alimentation sont exprimées en courant (ampères). Le framework Android multiplie le courant par la durée pendant laquelle le sous-système était actif 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, modem et Wi-Fi exécutant Android 7.0 ou une version ultérieure peuvent fournir des valeurs d'alimentation supplémentaires obtenues à partir des données du chipset.

Appareils avec des processeurs hétérogènes

Le profil d'alimentation des appareils dotés de cœurs de processeur 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 active du processeur pour chaque cluster.

Pour faire la distinction entre la consommation d'énergie active du processeur 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 de périphériques du noyau. Par exemple, dans une architecture hétérogène comportant deux (2) clusters avec quatre (4) cœurs :

  • cluster0 est composé de cpu0-3
  • cluster1 est composé de cpu4-7

Le framework Android utilise ces numéros 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 d'alimentation

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

Nom Description Exemple de valeur Remarques
ambient.on Alimentation supplémentaire utilisée lorsque l'écran est en mode veille/ambiant/toujours activé au lieu d'être désactivé. environ 100 mA -
screen.on Alimentation supplémentaire utilisée lorsque l'écran est allumé avec une luminosité minimale. 200 mA Inclut le contrôleur tactile et le rétroéclairage de l'écran. À 0 luminosité, et non au minimum Android, qui a tendance à être de 10 ou 20%.
screen.full Alimentation supplémentaire utilisée lorsque l'écran est à luminosité maximale, par rapport à écran à luminosité minimale. 100 mA-300 mA Une fraction de cette valeur (en fonction de la luminosité de l'écran) est ajoutée à la valeur screen.on pour calculer la consommation d'énergie de l'écran.
wifi.on Alimentation supplémentaire utilisée lorsque le Wi-Fi est activé, mais ne reçoit, ne transmet ni n'analyse. 2 mA -
wifi.active Alimentation supplémentaire utilisée lors de la transmission ou de la réception via Wi-Fi. 31 mA -
wifi.scan Alimentation supplémentaire utilisée lorsque le Wi-Fi recherche des points d'accès. 100 mA -
audio Alimentation supplémentaire utilisée lors du décodage/encodage audio via DSP. environ 10 mA Utilisé pour l'audio DSP.
vidéo Alimentation supplémentaire utilisée lors du décodage vidéo via DSP. environ 50 mA Utilisé pour la vidéo DSP.
camera.avg Consommation d'énergie moyenne du sous-système de l'appareil photo pour une application d'appareil photo typique. 600 mA Conçu comme une estimation approximative pour une application exécutant un aperçu et capturant environ 10 images en pleine résolution par minute.
camera.flashlight Consommation d'énergie moyenne utilisée par le module de flash de l'appareil photo lorsqu'il est allumé. 200 mA -
gps.signalqualitybased Alimentation supplémentaire utilisée par le GPS en fonction de l'intensité du signal. Il s'agit d'une entrée à plusieurs valeurs, une par intensité du signal, de la plus faible à la plus forte. 30 mA, 10 mA -
gps.on Alimentation supplémentaire utilisée lorsque le GPS acquiert un signal. 50 mA -
radio.active Alimentation supplémentaire utilisée lorsque la radio cellulaire transmet/reçoit. 100 mA-300 mA -
radio.scanning Alimentation supplémentaire utilisée lorsque la radio cellulaire recherche la tour. 1,2 mA -
radio.on Alimentation supplémentaire utilisée lorsque la radio cellulaire est activée. Il s'agit d'une entrée à plusieurs valeurs, 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 avec l'augmentation de l'intensité du signal. Si vous ne fournissez qu'une seule valeur, elle est 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 de le contrôleur. S'il existe plusieurs états de réception ou de transmission, la moyenne de ces états est prise en compte. En outre, le système collecte désormais des données pour les analyses Bluetooth et Low Energy (LE).

Android 7.0 et versions ultérieures n'utilisent plus les valeurs d'alimentation 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 Consommation de courant moyenne (mA) du contrôleur Bluetooth lors de la réception. -
bluetooth.controller.tx Consommation de courant moyenne (mA) du contrôleur Bluetooth lors de la transmission. -
bluetooth.controller.voltage Tension de fonctionnement moyenne (mV) du contrôleur Bluetooth. -
modem.controller.sleep Consommation de courant moyenne (mA) du contrôleur de modem lorsqu'il est en veille. 0 mA Ces valeurs ne sont pas estimées, mais proviennent de la fiche technique du contrôleur. S'il existe plusieurs états de réception, la moyenne de ces états est prise en compte. S'il existe plusieurs états de transmission, la spécification d'une valeur pour chaque état de transmission est prise en charge à partir d'Android 9.
modem.controller.idle Consommation de courant moyenne (mA) du contrôleur de modem lorsqu'il est inactif. -
modem.controller.rx Consommation de courant moyenne (mA) du contrôleur de modem lors de la réception. -
modem.controller.tx Consommation de courant moyenne (mA) du contrôleur de modem lors de la transmission à différents niveaux de puissance RF. Il s'agit d'une entrée à plusieurs valeurs, une par niveau de puissance de transmission. 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 Consommation de courant moyenne (mA) du contrôleur Wi-Fi lorsqu'il est inactif. - Ces valeurs ne sont pas estimées, mais proviennent de la fiche technique de le 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 Consommation de courant moyenne (mA) du contrôleur Wi-Fi lors de la réception. -
wifi.controller.tx Consommation de courant moyenne (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 à plusieurs valeurs qui répertorie 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 Alimentation 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. 50 mA Votre plate-forme peut utiliser plusieurs états d'inactivité avec différents niveaux de consommation d'énergie. Choisissez un état d'inactivité représentatif pour des périodes plus longues d'inactivité du planificateur (plusieurs millisecondes). Examinez le graphique d'alimentation sur votre équipement de mesure et choisissez des échantillons où le processeur est à sa consommation la plus faible, en ignorant les échantillons plus élevés où le processeur a quitté l'état d'inactivité.
cpu.active Alimentation 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 contenus dans chaque cluster de processeurs. 4, 2 Requis uniquement pour les appareils dotés d'architectures de processeurs hétérogènes. Le nombre d'entrées et l'ordre doivent correspondre au nombre de 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 -

Analyses Bluetooth et Low Energy (LE)

Pour les appareils exécutant Android 7.0, le système collecte des données pour les analyses Low Energy (LE) et le trafic réseau Bluetooth (tel que RFCOMM et L2CAP) et associe ces activités à l'application d'origine. Les analyses Bluetooth sont associées à l'application qui a lancé l'analyse, mais pas les analyses par lot (qui sont associées à l'application Bluetooth). Pour une application qui analyse pendant N millisecondes, le coût de l'analyse 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.