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 de puissance, utilisez un 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érivant les différences d'autres consommations d'énergie de référence, le cas échéant).
Comme l'objectif d'un profil de puissance est d'estimer correctement la consommation de la batterie, les valeurs du profil de puissance sont données en courant (ampères). Le framework Android multiplie le courant par le temps pendant lequel le sous-système a été actif et calcule la valeur mAh, qui est ensuite utilisée pour estimer la quantité de batterie drainée par l'application/le sous-système.
Les appareils dotés de contrôleurs Bluetooth, modem et Wi-Fi exécutant Android 7.0 et versions ultérieures 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 d'architecture hétérogène doit inclure les champs supplémentaires suivants :
- Nombre total de CPU pour chaque cluster (exprimé en cpu.clusters.cores).
- Vitesses de processeur prises en charge par 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 prises en charge pour les clusters, ajoutez le numéro de cluster au nom de la baie. 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 à quatre (4) cœurs :
- cluster0 se compose de cpu0-3
- cluster1 se compose de cpu4-7
Le framework Android utilise ces numéros de cœur 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 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 l'exemple de fichier dans AOSP, voir power_profile.xml .
Nom | Description | Exemple de valeur | Remarques |
---|---|---|---|
ambiant.on | Puissance supplémentaire utilisée lorsque l'écran est en mode somnolence/ambiant/toujours allumé au lieu d'être éteint. | environ 100mA | - |
allume l'écran | Puissance supplémentaire utilisée lorsque l'écran est allumé à la luminosité minimale. | 200 mA | Comprend un contrôleur tactile et un rétroéclairage de l'écran. A 0 luminosité, pas le minimum Android qui tend à être de 10 ou 20%. |
écran.plein | Puissance supplémentaire utilisée lorsque l'écran est à la luminosité maximale, par rapport à l'écran à la luminosité minimale. | 100mA-300mA | 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 activé | Puissance supplémentaire utilisée lorsque le Wi-Fi est activé mais pas de réception, de transmission ou de numérisation. | 2 mA | - |
wifi.actif | Puissance supplémentaire utilisée lors de la transmission ou de la réception via Wi-Fi. | 31 mA | - |
wifi.scan | Puissance supplémentaire utilisée lorsque le Wi-Fi recherche des points d'accès. | 100mA | - |
l'audio | Puissance supplémentaire utilisée lors du décodage/encodage audio via DSP. | environ 10mA | Utilisé pour l'audio DSP. |
vidéo | Puissance supplémentaire utilisée lors du décodage vidéo via DSP. | environ 50mA | Utilisé pour la vidéo DSP. |
caméra.avg | Consommation moyenne d'énergie par le sous-système de caméra pour une application de caméra typique. | 600mA | 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. |
caméra.lampe de poche | Puissance moyenne utilisée par le module flash de l'appareil photo lorsqu'il est allumé. | 200 mA | - |
gps.signalqualitybased | Puissance supplémentaire utilisée par le GPS en fonction de la puissance du signal. Il s'agit d'une entrée à plusieurs valeurs, une par force de signal, du plus faible au plus fort. | 30 mA, 10 mA | - |
GPS activé | Puissance supplémentaire utilisée lorsque le GPS acquiert un signal. | 50 mA | - |
radioactif | Puissance supplémentaire utilisée lorsque la radio cellulaire émet/reçoit. | 100mA-300mA | - |
balayage radio | Puissance supplémentaire utilisée lorsque la radio cellulaire recherche la tour. | 1,2 mA | - |
radio.on | Puissance supplémentaire utilisée lorsque la radio cellulaire est allumée. Il s'agit d'une entrée à valeurs multiples, une par force de signal (pas de signal, faible, modéré, fort). | 1,2 mA | Certaines radios augmentent la puissance lorsqu'elles recherchent une tour cellulaire et ne détectent pas de signal. Les valeurs peuvent être identiques ou diminuer avec l'augmentation de la puissance du signal. Si vous fournissez une seule valeur, la même valeur est utilisée pour toutes les forces. Si vous fournissez deux valeurs, la première est utilisée pour l'absence de signal, la seconde valeur est utilisée pour toutes les autres intensités, et ainsi de suite. |
bluetooth.controller.idle | Appel de courant moyen (mA) du contrôleur Bluetooth lorsqu'il est inactif. | - | Ces valeurs ne sont pas estimées, mais tirées de la fiche technique du contrôleur. S'il existe plusieurs états de réception ou d'émission, la moyenne de ces états est prise. De plus, le système collecte désormais des données pour les scans Low Energy (LE) et Bluetooth . 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 Bluetooth est activé mais inactif). |
bluetooth.controller.rx | Appel de courant moyen (mA) du contrôleur Bluetooth lors de la réception. | - | |
bluetooth.controller.tx | Appel 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 | Appel de courant moyen (mA) du contrôleur du modem lorsqu'il est en veille. | 0 mA | Ces valeurs ne sont pas estimées, mais tirées de la fiche technique du contrôleur. S'il existe plusieurs états de réception, la moyenne de ces états est prise. 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 | Appel de courant moyen (mA) du contrôleur du modem lorsqu'il est inactif. | - | |
modem.controller.rx | Appel de courant moyen (mA) du contrôleur du modem lors de la réception. | - | |
modem.controller.tx | Appel de courant moyen (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.contrôleur.tension | Tension de fonctionnement moyenne (mV) du contrôleur du modem. | - | |
wifi.controller.idle | Appel de courant moyen (mA) du contrôleur Wi-Fi lorsqu'il est inactif. | - | Ces valeurs ne sont pas estimées, mais tirées de la fiche technique du contrôleur. S'il existe plusieurs états de réception ou d'émission, la moyenne de ces états est prise. |
wifi.controller.rx | Appel de courant moyen (mA) du contrôleur Wi-Fi lors de la réception. | - | |
wifi.controller.tx | Appel 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 à plusieurs valeurs qui répertorie chaque vitesse CPU possible en KHz. | 125000KHz, 250000KHz, 500000KHz, 1000000KHz, 1500000KHz | 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.éveillé | 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 avoir plusieurs états d'inactivité en cours d'utilisation avec différents niveaux de consommation d'énergie ; choisissez un état d'inactivité représentatif pour de plus longues périodes d'inactivité du planificateur (plusieurs millisecondes). Examinez le graphique de puissance sur votre équipement de mesure et choisissez des échantillons où le CPU est à sa consommation la plus faible, en supprimant les échantillons plus élevés là où le CPU est sorti inactif. |
cpu.actif | Puissance supplémentaire utilisée par les processeurs lorsqu'ils fonctionnent à des vitesses différentes. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | La valeur représente la puissance utilisée par les rails du processeur lorsqu'ils fonctionnent à différentes vitesses. Définissez la vitesse maximale dans le noyau sur chacune des vitesses autorisées et fixez le CPU à 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 CPU. | 4, 2 | Requis uniquement pour les périphériques avec des architectures de CPU 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 le cluster0, la deuxième entrée représente le nombre de cœurs de processeur dans le cluster1, et ainsi de suite. |
capacité de la batterie | Capacité totale de la batterie en mAh. | 3000 mAh | - |
Balayages Low Energy (LE) et Bluetooth
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 (tels que RFCOMM et L2CAP) et associe ces activités à l'application initiatrice. Les analyses Bluetooth sont associées à l'application qui a lancé l'analyse, mais les analyses par lots ne le sont pas (et sont plutôt associées à l'application Bluetooth). Pour une application scannant pendant N millisecondes, le coût du scan est de N millisecondes de temps rx et de N millisecondes de temps tx ; tout le temps restant du contrôleur est affecté au trafic réseau ou à l'application Bluetooth.
, 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 de puissance, utilisez un 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érivant les différences d'autres consommations d'énergie de référence, le cas échéant).
Comme l'objectif d'un profil de puissance est d'estimer correctement la consommation de la batterie, les valeurs du profil de puissance sont données en courant (ampères). Le framework Android multiplie le courant par le temps pendant lequel le sous-système a été actif et calcule la valeur mAh, qui est ensuite utilisée pour estimer la quantité de batterie drainée par l'application/le sous-système.
Les appareils dotés de contrôleurs Bluetooth, modem et Wi-Fi exécutant Android 7.0 et versions ultérieures 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 d'architecture hétérogène doit inclure les champs supplémentaires suivants :
- Nombre total de CPU pour chaque cluster (exprimé en cpu.clusters.cores).
- Vitesses de processeur prises en charge par 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 prises en charge pour les clusters, ajoutez le numéro de cluster au nom de la baie. 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 à quatre (4) cœurs :
- cluster0 se compose de cpu0-3
- cluster1 se compose de cpu4-7
Le framework Android utilise ces numéros de cœur 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 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 l'exemple de fichier dans AOSP, voir power_profile.xml .
Nom | Description | Exemple de valeur | Remarques |
---|---|---|---|
ambiant.on | Puissance supplémentaire utilisée lorsque l'écran est en mode somnolence/ambiant/toujours allumé au lieu d'être éteint. | environ 100mA | - |
allume l'écran | Puissance supplémentaire utilisée lorsque l'écran est allumé à la luminosité minimale. | 200 mA | Comprend un contrôleur tactile et un rétroéclairage de l'écran. A 0 luminosité, pas le minimum Android qui tend à être de 10 ou 20%. |
écran.plein | Puissance supplémentaire utilisée lorsque l'écran est à la luminosité maximale, par rapport à l'écran à la luminosité minimale. | 100mA-300mA | 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 activé | Puissance supplémentaire utilisée lorsque le Wi-Fi est activé mais pas de réception, de transmission ou de numérisation. | 2 mA | - |
wifi.actif | Puissance supplémentaire utilisée lors de la transmission ou de la réception via Wi-Fi. | 31 mA | - |
wifi.scan | Puissance supplémentaire utilisée lorsque le Wi-Fi recherche des points d'accès. | 100mA | - |
l'audio | Puissance supplémentaire utilisée lors du décodage/encodage audio via DSP. | environ 10mA | Utilisé pour l'audio DSP. |
vidéo | Puissance supplémentaire utilisée lors du décodage vidéo via DSP. | environ 50mA | Utilisé pour la vidéo DSP. |
caméra.avg | Consommation moyenne d'énergie par le sous-système de caméra pour une application de caméra typique. | 600mA | 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. |
caméra.lampe de poche | Puissance moyenne utilisée par le module flash de l'appareil photo lorsqu'il est allumé. | 200 mA | - |
gps.signalqualitybased | Puissance supplémentaire utilisée par le GPS en fonction de la force du signal. Il s'agit d'une entrée à plusieurs valeurs, une par force de signal, du plus faible au plus fort. | 30 mA, 10 mA | - |
GPS activé | Puissance supplémentaire utilisée lorsque le GPS acquiert un signal. | 50 mA | - |
radioactif | Puissance supplémentaire utilisée lorsque la radio cellulaire émet/reçoit. | 100mA-300mA | - |
balayage radio | Puissance supplémentaire utilisée lorsque la radio cellulaire recherche la tour. | 1,2 mA | - |
radio.on | Puissance supplémentaire utilisée lorsque la radio cellulaire est allumée. Il s'agit d'une entrée à valeurs multiples, une par force de signal (pas de signal, faible, modéré, fort). | 1,2 mA | Certaines radios augmentent la puissance lorsqu'elles recherchent une tour cellulaire et ne détectent pas de signal. Les valeurs peuvent être identiques ou diminuer avec l'augmentation de la force du signal. Si vous fournissez une seule valeur, la même valeur est utilisée pour toutes les forces. Si vous fournissez deux valeurs, la première est utilisée pour l'absence de signal, la seconde valeur est utilisée pour toutes les autres intensités, et ainsi de suite. |
bluetooth.controller.idle | Appel de courant moyen (mA) du contrôleur Bluetooth lorsqu'il est inactif. | - | Ces valeurs ne sont pas estimées, mais tirées de la fiche technique du contrôleur. S'il existe plusieurs états de réception ou d'émission, la moyenne de ces états est prise. De plus, le système collecte désormais des données pour les scans Low Energy (LE) et Bluetooth . 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 Bluetooth est activé mais inactif). |
bluetooth.controller.rx | Appel de courant moyen (mA) du contrôleur Bluetooth lors de la réception. | - | |
bluetooth.controller.tx | Appel 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 | Appel de courant moyen (mA) du contrôleur du modem lorsqu'il est en veille. | 0 mA | Ces valeurs ne sont pas estimées, mais tirées de la fiche technique du contrôleur. S'il existe plusieurs états de réception, la moyenne de ces états est prise. 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 | Appel de courant moyen (mA) du contrôleur du modem lorsqu'il est inactif. | - | |
modem.controller.rx | Appel de courant moyen (mA) du contrôleur du modem lors de la réception. | - | |
modem.controller.tx | Appel de courant moyen (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.contrôleur.tension | Tension de fonctionnement moyenne (mV) du contrôleur du modem. | - | |
wifi.controller.idle | Appel de courant moyen (mA) du contrôleur Wi-Fi lorsqu'il est inactif. | - | Ces valeurs ne sont pas estimées, mais tirées de la fiche technique du contrôleur. S'il existe plusieurs états de réception ou d'émission, la moyenne de ces états est prise. |
wifi.controller.rx | Appel de courant moyen (mA) du contrôleur Wi-Fi lors de la réception. | - | |
wifi.controller.tx | Appel 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 à plusieurs valeurs qui répertorie chaque vitesse CPU possible en KHz. | 125000KHz, 250000KHz, 500000KHz, 1000000KHz, 1500000KHz | 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.éveillé | 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 avoir plusieurs états d'inactivité en cours d'utilisation avec différents niveaux de consommation d'énergie ; choisissez un état d'inactivité représentatif pour de plus longues périodes d'inactivité du planificateur (plusieurs millisecondes). Examinez le graphique de puissance sur votre équipement de mesure et choisissez des échantillons où le CPU est à sa consommation la plus faible, en supprimant les échantillons plus élevés là où le CPU est sorti inactif. |
cpu.actif | Puissance supplémentaire utilisée par les processeurs lorsqu'ils fonctionnent à des vitesses différentes. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | La valeur représente la puissance utilisée par les rails du processeur lorsqu'ils fonctionnent à différentes vitesses. Définissez la vitesse maximale dans le noyau sur chacune des vitesses autorisées et fixez le CPU à 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 CPU. | 4, 2 | Requis uniquement pour les périphériques avec des architectures de CPU 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 le cluster0, la deuxième entrée représente le nombre de cœurs de processeur dans le cluster1, et ainsi de suite. |
capacité de la batterie | Capacité totale de la batterie en mAh. | 3000 mAh | - |
Balayages Low Energy (LE) et Bluetooth
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 (tels que RFCOMM et L2CAP) et associe ces activités à l'application initiatrice. Les analyses Bluetooth sont associées à l'application qui a lancé l'analyse, mais les analyses par lots ne le sont pas (et sont plutôt associées à l'application Bluetooth). Pour une application scannant pendant N millisecondes, le coût du scan est de N millisecondes de temps rx et de N millisecondes de temps tx ; tout le temps restant du contrôleur est affecté au trafic réseau ou à l'application Bluetooth.