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 aux autres consommations d'énergie de référence, le cas échéant).
Étant donné que l'objectif d'un profil d'alimentation est d'estimer correctement la décharge de la batterie, les valeurs du profil d'alimentation sont indiquées en courant (en ampères). Le framework Android multiplie le courant par le temps pendant lequel le sous-système était actif et calcule la valeur du 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 du Bluetooth, d'un modem et de contrôleurs Wi-Fi équipés d'Android 7.0 ou version ultérieure peuvent fournir des valeurs de puissance supplémentaires obtenues à partir des données du chipset.
Appareils avec CPU hétérogènes
Le profil d'alimentation des appareils dotés de cœurs de processeur avec une architecture hétérogène doit inclure les champs supplémentaires suivants:
- Nombre total de processeurs pour chaque cluster (exprimée en cpu.clusters.cores).
- Vitesses de processeur compatibles avec chaque cluster.
- Consommation d'énergie active du processeur pour chaque cluster.
Pour différencier la consommation d'énergie du processeur actif et les vitesses de processeur compatibles pour les clusters, ajoutez le numéro de 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 kernel. Par exemple, dans une architecture hétérogène comportant deux (2) clusters avec quatre (4) cœurs:
- cluster0 se compose de cpu0-3
- cluster1 est constitué 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 CPU 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 d'alimentation disponibles. Pour afficher l'exemple de fichier dans AOSP, consultez power_profile.xml.
Nom | Description | Exemple de valeur | Notes |
---|---|---|---|
ambiant.on | Énergie supplémentaire utilisée lorsque l'écran est en mode veille, en mode Veille intelligente ou en mode Always-on au lieu d'être éteint. | environ 100 mA | - |
screen.on | Énergie supplémentaire consommé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 % de luminosité, et non au niveau minimal d'Android, qui tend à être de 10 ou 20 %. |
écran.plein | 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 (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 | Énergie supplémentaire utilisée lorsque le Wi-Fi est activé, mais qu'il n'est pas en mesure de recevoir, de transmettre ni de rechercher des données. | 2 mA | - |
wifi.actif | Énergie supplémentaire utilisée lors de la transmission ou de la réception via le Wi-Fi. | 31 mA | - |
wifi.scan | Énergie supplémentaire utilisée lorsque le Wi-Fi recherche des points d'accès. | 100 mA | - |
audio | Énergie supplémentaire utilisée lors du décodage/encodage audio via le DSP. | Environ 10 mA | Utilisé pour l'audio DSP. |
vidéo | Énergie supplémentaire utilisée lors du décodage vidéo via le DSP. | environ 50 mA | Utilisé pour la vidéo DSP. |
camera.avg | Consommation d'énergie moyenne par le sous-système de l'appareil photo pour une application d'appareil photo typique. | 600 mA | Estimation approximative pour une application exécutant un aperçu et capturant environ 10 images en pleine résolution par minute. |
camera.flashlight | Énergie moyenne utilisée par le module du flash de l'appareil photo lorsqu'il est activé. | 200 mA | - |
gps.signalqualitybased | Énergie supplémentaire utilisée par le GPS en fonction de l'intensité du signal. Il s'agit d'une entrée multivaleur, une par intensité du signal, de la plus faible à la plus forte. | 30 mA, 10 mA | - |
gps.on | Énergie supplémentaire utilisée lorsque le GPS acquiert un signal. | 50 mA | - |
radio.active | Énergie supplémentaire utilisée lorsque la radio mobile transmet/reçoit des données. | 100 mA à 300 mA | - |
radio.scanning | Énergie supplémentaire utilisée lorsque la radio mobile appelle la tour. | 1,2 mA | - |
radio.on | Énergie supplémentaire utilisée lorsque la radio mobile est activée. Il s'agit d'une entrée multivaleur, une par intensité du signal (pas de 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, la même valeur est utilisée pour tous les niveaux. Si vous indiquez deux valeurs, la première correspond à l'absence de signal, la seconde à toutes les autres valeurs, et ainsi de suite. |
bluetooth.controller.idle | Consommation moyenne de courant (mA) du contrôleur Bluetooth lorsqu'il est inactif. | - | Ces valeurs ne sont pas estimées, mais extraites de la fiche technique du contrôleur. Si plusieurs états de réception ou d'émission sont définis, la moyenne de ces états est calculée. De plus, le système collecte désormais des données pour les recherches Bluetooth et Bluetooth basse consommation (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). |
contrôleur.rx | Consommation moyenne de courant (mA) du contrôleur Bluetooth lors de la réception. | - | |
bluetooth.controller.tx | Consommation moyenne de courant (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 moyenne (mA) du modem contrôleur en mode veille. | 0 mA | Ces valeurs ne sont pas estimées, mais extraites de la fiche technique du contrôleur. S'il existe plusieurs états de réception, la moyenne de ces états est calculée. S'il existe plusieurs états de transmission, il est possible de spécifier une valeur pour chaque état de transmission à partir d'Android 9. |
modem.controller.inactivité | Consommation moyenne de courant (mA) du contrôleur du modem au repos. | - | |
modem.controller.rx | Consommation électrique moyenne (mA) du modem contrôleur à la réception. | - | |
modem.controller.tx | Consommation moyenne de courant (mA) du contrôleur du 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 du modem. | - | |
wifi.controller.idle | Consommation moyenne de courant (mA) du contrôleur Wi-Fi au repos. | - | Ces valeurs ne sont pas estimées, mais extraites de la fiche technique du contrôleur. S'il existe plusieurs états de réception ou de transmission, la moyenne de ces états est calculée. |
wifi.controller.rx | Consommation moyenne (mA) du contrôleur Wi-Fi lors de la réception. | - | |
wifi.controller.tx | Consommation moyenne de courant (mA) du contrôleur Wi-Fi lors de la transmission. | - | |
wifi.controller.voltage | Tension moyenne de fonctionnement (mV) de la manette Wi-Fi. | - | |
cpu.speeds | Il s'agit d'une entrée multivaleur 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 à l'état de suspension du système. | 3 mA | - |
cpu.awake | Énergie supplémentaire utilisée lorsque les processeurs sont dans l'é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 des niveaux de consommation d'énergie différents. Choisissez un état d'inactivité représentatif pour les périodes d'inactivité du planificateur plus longues (plusieurs millisecondes). Examinez le graphique de la consommation d'énergie sur votre équipement de mesure et choisissez les échantillons où le processeur est à sa consommation la plus faible, en excluant les échantillons plus élevés où le processeur est sorti de l'état inactif. |
cpu.active | Énergie 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 de 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. |
capacité de la batterie | Capacité totale de la batterie en mAh. | 3 000 mAh | - |
Balayages Bluetooth et Bluetooth basse consommation (LE)
Pour les appareils équipés d'Android 7.0, le système collecte des données pour les analyses à basse consommation (LE) et le trafic réseau Bluetooth (comme RFCOMM et L2CAP) et associe ces activités à l'application qui l'a lancée. Les analyses Bluetooth sont associées à l'application qui a lancé l'analyse, mais pas les analyses par lot (et sont associées à l'application Bluetooth). Pour une application qui effectue une 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 d'émission. Tout le temps restant du contrôleur est attribué au trafic réseau ou à l'application Bluetooth.