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. Mesurer la consommation d'énergie lors de ces opérations et calculer les valeurs (en déterminant les différences par rapport aux autres utilisations d'énergie de référence, le cas échéant).
L'objectif d'un profil d'alimentation est d'estimer de manière appropriée la décharge de la batterie. Les valeurs du profil d'alimentation sont donc exprimées en courant (ampères). Le framework Android multiplie le courant par l'heure à laquelle le sous-système était actif et calcule la valeur en mAh, qui est ensuite utilisée pour estimer la quantité de batterie drainées par l’application ou le sous-système.
Les appareils équipés de contrôleurs Bluetooth, de modem et de Wi-Fi exécutant Android 7.0 ou version ultérieure peuvent fournir des valeurs d'alimentation supplémentaires obtenues à partir des données du chipset.
Appareils avec processeurs hétérogènes
Profil d'alimentation pour les 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é dans cpu.clusters.cores).
- Vitesses de processeur compatibles avec chaque cluster.
- Consommation d'énergie du processeur actif pour chaque cluster.
Pour différencier la consommation d'énergie active du processeur et le processeur compatible pour les clusters, ajoutez le numéro de cluster au nom du tableau. Cluster les numéros sont attribués dans l’ordre des cœurs de CPU dans l’arborescence des périphériques du noyau. Pour exemple, dans une architecture hétérogène comportant deux (2) clusters avec quatre (4) cœurs:
- cluster0 se compose de cpu0-3
- cluster1 se compose de cpu4-7
Le framework Android utilise ces nombres de cœurs de processeur lorsqu'il lit les statistiques.
à partir des fichiers sysfs
dans:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats
Exemple de processeurs et de vitesses d'un 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 puissance disponibles. Pour afficher l'exemple de fichier dans AOSP, consultez power_profile.xml.
Nom | Description | Exemple de valeur | Notes |
---|---|---|---|
ambient.on | Énergie supplémentaire utilisée lorsque l'écran est en mode Sommeil/Veille/Always-on au lieu d'être éteint. | environ 100 mA | - |
screen.on | Puissance supplémentaire utilisée lorsque l'écran est allumé avec une luminosité minimale. | 200 mA | Inclut l'écran de contrôle 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 à avec une 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 ne reçoit pas de données la transmission ou la numérisation. | 2 mA | - |
wifi.actif | Puissance supplémentaire utilisée lors de l'envoi ou de la réception via 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. | 50 mA environ | 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. |
appareil photo.lampe de poche | Puissance moyenne utilisée par le module de 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 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 | Puissance supplémentaire utilisée lors de l'émission ou de la réception d'un signal radio cellulaire. | 100 mA à 300 mA | - |
recherche radio | Énergie supplémentaire utilisée lorsque la radio mobile appelle la tour. | 1,2 mA | - |
radio.on | Puissance supplémentaire consommée lorsque la radio cellulaire est allumée. Il s'agit d'une entrée à valeurs multiples, une par intensité de 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 pas de signal. Les valeurs peuvent être identiques ou diminuer lorsque le signal augmente. force. Si vous ne fournissez qu'une seule valeur, la même valeur est utilisée pour toutes ses points forts. 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, etc. |
contrôleur.bluetooth.idle | Consommation moyenne de courant (mA) du contrôleur Bluetooth lorsqu'il est inactif. | - | Ces valeurs ne sont pas estimées, mais tirées 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 pris. De plus, le système collecte désormais des données
Recherches basse consommation (LE) et Bluetooth. Android Les versions 7.0 et ultérieures n'utilisent plus les valeurs d'alimentation Bluetooth pour bluetooth.active (utilisé pour la lecture audio via Bluetooth A2DP) et Bluetooth.on (utilisé lorsque le Bluetooth est activé, mais inactif). |
bluetooth.controller.rx | Consommation moyenne (mA) de la manette Bluetooth lors de la réception. | - | |
contrôleur.Bluetooth.tx | Consommation moyenne (mA) de la manette Bluetooth lors de la transmission | - | |
bluetooth.controller.voltage | Tension moyenne de fonctionnement (mV) de la manette Bluetooth. | - | |
modem.controller.sleep | Consommation moyenne (mA) du modem contrôleur en mode veille. | 0 mA | Ces valeurs ne sont pas des estimations, mais sont extraites 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, vous pouvez spécifier une valeur pour chaque état de transmission à partir d'Android 9. |
modem.controller.idle | Consommation moyenne (mA) du modem contrôleur en cas d'inactivité. | - | |
modem.controller.rx | Consommation moyenne (mA) du modem contrôleur à la réception. | - | |
modem.controller.tx | Consommation électrique moyenne (mA) de la télécommande du modem pour une transmission à des puissances RF différentes et des niveaux de service. 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.tension | Tension moyenne de fonctionnement (mV) de la télécommande du modem. | - | |
wifi.controller.inactivité | 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 pris. |
wifi.controller.rx | Consommation moyenne (mA) du contrôleur Wi-Fi lors de la réception. | - | |
contrôleur.wifi.tx | Consommation moyenne (mA) du contrôleur Wi-Fi lors de la transmission. | - | |
Tension.contrôleur.wifi | Tension de fonctionnement moyenne (mV) du contrôleur 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, 1000 000 kHz, 1500 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) se trouvent dans le système l'état de suspension. | 3 mA | - |
cpu.awake | Puissance supplémentaire utilisée lorsque les CPU sont inactifs pour la programmation (boucle inactive du noyau) ; le système n'est pas à l'état de suspension du système. | 50 mA | Votre plate-forme peut avoir plusieurs états inactifs et différents les niveaux de consommation d'énergie ; choisir un état d'inactivité représentatif pendant plus longtemps périodes d'inactivité du programmeur (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.actif | É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 CPU lorsqu'ils fonctionnent à différents en ligne. 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. | Requis uniquement pour les appareils dotés d'un processeur hétérogène d'infrastructure. Le nombre d'entrées et l'ordre doivent correspondre au nombre de pour les entrées de cluster cpu.active et cpu.speeds. La première entrée représente au nombre de cœurs de processeur dans cluster0, la deuxième entrée représente le nombre de cœurs de processeur dans cluster1, etc. |
battery.capacity | Capacité totale de la batterie en mAh. | 3 000 mAh | - |
Recherches basse consommation (LE) et Bluetooth
Pour les appareils équipés d'Android 7.0, le système collecte les données à basse consommation et du trafic réseau Bluetooth (RFCOMM et L2CAP, par exemple), ces activités avec l’application de lancement. Les recherches Bluetooth sont associées avec l'application qui a lancé l'analyse, mais pas les analyses par lot (et sont associés à l'application Bluetooth). Pour une application pendant N millisecondes, le coût de l'analyse est de N millisecondes de temps rx et N millisecondes du temps tx ; le temps restant pour la manette est attribué le trafic réseau ou l'application Bluetooth.