I produttori di dispositivi devono fornire un profilo di alimentazione del componente in /frameworks/base/core/res/res/xml/power_profile.xml
.
Per determinare i valori per i profili di alimentazione, utilizzare l'hardware che misura la potenza utilizzata dal dispositivo ed eseguire le varie operazioni per le quali sono necessarie informazioni. Misurare il consumo energetico durante tali operazioni e calcolare i valori (derivando le differenze rispetto ad altri consumi energetici di base, a seconda dei casi).
Poiché l'obiettivo di un profilo di potenza è stimare il consumo della batteria in modo appropriato, i valori del profilo di potenza sono forniti in corrente (ampere). Il framework Android moltiplica la corrente per il tempo in cui il sottosistema è stato attivo e calcola il valore in mAh, che viene quindi utilizzato per stimare la quantità di batteria consumata dall'applicazione/sottosistema.
I dispositivi con controller Bluetooth, modem e Wi-Fi che eseguono Android 7.0 e versioni successive possono fornire valori di potenza aggiuntivi ottenuti dai dati del chipset.
Dispositivi con CPU eterogenee
Il profilo di alimentazione per dispositivi con core CPU di architettura eterogenea deve includere i seguenti campi aggiuntivi:
- Numero di CPU totali per ogni cluster (espresso in cpu.clusters.cores).
- Velocità della CPU supportate da ciascun cluster.
- Consumo energetico attivo della CPU per ogni cluster.
Per distinguere tra il consumo energetico della CPU attiva e le velocità della CPU supportate per i cluster, aggiungere il numero del cluster al nome dell'array. I numeri dei cluster vengono assegnati nell'ordine dei core della CPU nell'albero dei dispositivi del kernel. Ad esempio, in un'architettura eterogenea che ha due (2) cluster con quattro (4) core:
- cluster0 consiste di cpu0-3
- cluster1 è costituito da cpu4-7
Il framework Android utilizza questi numeri di core della CPU quando legge le statistiche dai file sysfs
in: /sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Esempio di CPU cluster e velocità:
<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>
Valori di potenza
La tabella seguente descrive le impostazioni dei valori di potenza disponibili. Per visualizzare il file di esempio in AOSP, vedere power_profile.xml .
Nome | Descrizione | Valore di esempio | Appunti |
---|---|---|---|
ambiente.on | Potenza aggiuntiva utilizzata quando lo schermo è in modalità doze/ambient/always-on anziché off. | circa 100mA | - |
schermo.acceso | Potenza aggiuntiva utilizzata quando lo schermo è acceso alla luminosità minima. | 200 mA | Include controller touch e retroilluminazione del display. A luminosità 0, non il minimo Android che tende ad essere del 10 o del 20%. |
schermo.pieno | Potenza aggiuntiva utilizzata quando lo schermo è alla massima luminosità, rispetto allo schermo alla luminosità minima. | 100 mA-300 mA | Una frazione di questo valore (basata sulla luminosità dello schermo) viene aggiunta al valore screen.on per calcolare il consumo energetico dello schermo. |
wifi.on | Potenza aggiuntiva utilizzata quando il Wi-Fi è attivo ma non riceve, trasmette o scansiona. | 2 mA | - |
wifi.attivo | Potenza aggiuntiva utilizzata durante la trasmissione o la ricezione tramite Wi-Fi. | 31 mA | - |
wifi.scan | Potenza aggiuntiva utilizzata quando il Wi-Fi esegue la scansione dei punti di accesso. | 100 mA | - |
Audio | Potenza aggiuntiva utilizzata durante la decodifica/codifica audio tramite DSP. | circa 10 mA | Utilizzato per l'audio DSP. |
video | Potenza aggiuntiva utilizzata durante la decodifica video tramite DSP. | circa 50 mA | Usato per video DSP. |
camera.avg | Consumo energetico medio da parte del sottosistema della telecamera per un'applicazione tipica della telecamera. | 600 mA | Inteso come stima approssimativa per un'applicazione che esegue un'anteprima e acquisisce circa 10 immagini a piena risoluzione al minuto. |
fotocamera.torcia | Potenza media utilizzata dal modulo flash della fotocamera quando è acceso. | 200 mA | - |
gps.basato sulla qualità del segnale | Potenza aggiuntiva utilizzata dal GPS in base alla potenza del segnale. Questa è una voce multivalore, una per intensità del segnale, dal più debole al più forte. | 30 mA, 10 mA | - |
gps.on | Potenza aggiuntiva utilizzata quando il GPS sta acquisendo un segnale. | 50 mA | - |
radio.attivo | Potenza aggiuntiva utilizzata quando la radio cellulare sta trasmettendo/ricevendo. | 100 mA-300 mA | - |
radio.scansione | Potenza aggiuntiva utilizzata quando la radio cellulare sta chiamando la torre. | 1,2 mA | - |
radio.accesa | Potenza aggiuntiva utilizzata quando la radio cellulare è attiva. Questa è una voce con più valori, uno per intensità del segnale (nessun segnale, debole, moderato, forte). | 1,2 mA | Alcune radio aumentano la potenza quando cercano una torre cellulare e non rilevano un segnale. I valori possono essere gli stessi o diminuire all'aumentare della potenza del segnale. Se fornisci un solo valore, lo stesso valore viene utilizzato per tutti i punti di forza. Se fornisci due valori, il primo viene utilizzato per assenza di segnale, il secondo valore viene utilizzato per tutte le altre intensità e così via. |
bluetooth.controller.idle | Assorbimento di corrente medio (mA) del controller Bluetooth quando è inattivo. | - | Questi valori non sono stimati, ma presi dalla scheda tecnica del controllore. Se sono presenti più stati di ricezione o trasmissione, viene presa la media di tali stati. Inoltre, il sistema ora raccoglie i dati per le scansioni Low Energy (LE) e Bluetooth . Android 7.0 e versioni successive non utilizzano più i valori di potenza Bluetooth per bluetooth.active (utilizzato durante la riproduzione audio tramite Bluetooth A2DP) e bluetooth.on (utilizzato quando il Bluetooth è attivo ma inattivo). |
bluetooth.controller.rx | Assorbimento di corrente medio (mA) del controller Bluetooth durante la ricezione. | - | |
bluetooth.controller.tx | Assorbimento di corrente medio (mA) del controller Bluetooth durante la trasmissione. | - | |
bluetooth.controller.voltaggio | Tensione operativa media (mV) del controller Bluetooth. | - | |
modem.controller.inattivo | Assorbimento di corrente medio (mA) del controller del modem quando è inattivo. | 0 mA | Questi valori non sono stimati, ma presi dalla scheda tecnica del controllore. Se sono presenti più stati di ricezione, viene presa la media di tali stati. Se sono presenti più stati di trasmissione, la specifica di un valore per ogni stato di trasmissione è supportata a partire da Android 9. |
modem.controller.inattivo | Assorbimento di corrente medio (mA) del controller del modem quando è inattivo. | - | |
modem.controller.rx | Assorbimento di corrente medio (mA) del controller del modem durante la ricezione. | - | |
modem.controller.tx | Assorbimento di corrente medio (mA) del controller del modem durante la trasmissione a diversi livelli di potenza RF. Questa è una voce multivalore con un valore per livello di potenza di trasmissione. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controllore.tensione | Tensione operativa media (mV) del controller del modem. | - | |
wifi.controller.idle | Assorbimento medio di corrente (mA) del controller Wi-Fi quando è inattivo. | - | Questi valori non sono stimati, ma presi dalla scheda tecnica del controllore. Se sono presenti più stati di ricezione o trasmissione, viene presa la media di tali stati. |
wifi.controller.rx | Assorbimento di corrente medio (mA) del controller Wi-Fi durante la ricezione. | - | |
wifi.controller.tx | Assorbimento di corrente medio (mA) del controller Wi-Fi durante la trasmissione. | - | |
wifi.controller.voltaggio | Tensione operativa media (mV) del controller Wi-Fi. | - | |
cpu.speeds | Questa è una voce multivalore che elenca ogni possibile velocità della CPU in KHz. | 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz | Il numero e l'ordine delle voci devono corrispondere alle voci mA in cpu.active. |
cpu.idle | Potenza totale assorbita dal sistema quando le CPU (e il SoC) si trovano nello stato di sospensione del sistema. | 3 mA | - |
cpu.attiva | Potenza aggiuntiva utilizzata quando le CPU sono in stato di inattività di programmazione (loop inattivo del kernel); il sistema non è nello stato di sospensione del sistema. | 50 mA | La tua piattaforma potrebbe avere più di uno stato inattivo in uso con diversi livelli di consumo energetico; scegliere uno stato di inattività rappresentativo per periodi più lunghi di inattività dello scheduler (diversi millisecondi). Esamina il grafico della potenza sulla tua apparecchiatura di misurazione e scegli i campioni in cui la CPU ha il consumo minimo, scartando i campioni più alti in cui la CPU è rimasta inattiva. |
cpu.attivo | Potenza aggiuntiva utilizzata dalle CPU durante l'esecuzione a velocità diverse. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Il valore rappresenta la potenza utilizzata dai binari della CPU durante l'esecuzione a velocità diverse. Imposta la velocità massima nel kernel su ciascuna delle velocità consentite e aggancia la CPU a quella velocità. Il numero e l'ordine delle voci corrispondono al numero e all'ordine delle voci in cpu.speeds. |
cpu.clusters.cores | Numero di core contenuti in ogni cluster di CPU. | 4, 2 | Richiesto solo per dispositivi con architetture di CPU eterogenee . Il numero di voci e l'ordine devono corrispondere al numero di voci del cluster per cpu.active e cpu.speeds. La prima voce rappresenta il numero di core CPU nel cluster0, la seconda voce rappresenta il numero di core CPU nel cluster1 e così via. |
capacità della batteria | Capacità totale della batteria in mAh. | 3000 mAh | - |
Low Energy (LE) e scansioni Bluetooth
Per i dispositivi che eseguono Android 7.0, il sistema raccoglie i dati per le scansioni Low Energy (LE) e il traffico di rete Bluetooth (come RFCOMM e L2CAP) e associa queste attività all'applicazione di avvio. Le scansioni Bluetooth sono associate all'applicazione che ha avviato la scansione, ma le scansioni batch non lo sono (e sono invece associate all'applicazione Bluetooth). Per un'applicazione che esegue la scansione per N millisecondi, il costo della scansione è N millisecondi di tempo rx e N millisecondi di tempo tx; tutto il tempo rimanente del controller viene assegnato al traffico di rete o all'applicazione Bluetooth.
, I produttori di dispositivi devono fornire un profilo di alimentazione del componente in /frameworks/base/core/res/res/xml/power_profile.xml
.
Per determinare i valori per i profili di alimentazione, utilizzare l'hardware che misura la potenza utilizzata dal dispositivo ed eseguire le varie operazioni per le quali sono necessarie informazioni. Misurare il consumo energetico durante tali operazioni e calcolare i valori (derivando le differenze rispetto ad altri consumi energetici di base, a seconda dei casi).
Poiché l'obiettivo di un profilo di potenza è stimare il consumo della batteria in modo appropriato, i valori del profilo di potenza sono forniti in corrente (ampere). Il framework Android moltiplica la corrente per il tempo in cui il sottosistema è stato attivo e calcola il valore in mAh, che viene quindi utilizzato per stimare la quantità di batteria consumata dall'applicazione/sottosistema.
I dispositivi con controller Bluetooth, modem e Wi-Fi che eseguono Android 7.0 e versioni successive possono fornire valori di potenza aggiuntivi ottenuti dai dati del chipset.
Dispositivi con CPU eterogenee
Il profilo di alimentazione per dispositivi con core CPU di architettura eterogenea deve includere i seguenti campi aggiuntivi:
- Numero di CPU totali per ogni cluster (espresso in cpu.clusters.cores).
- Velocità della CPU supportate da ciascun cluster.
- Consumo energetico attivo della CPU per ogni cluster.
Per distinguere tra il consumo energetico della CPU attiva e le velocità della CPU supportate per i cluster, aggiungere il numero del cluster al nome dell'array. I numeri dei cluster vengono assegnati nell'ordine dei core della CPU nell'albero dei dispositivi del kernel. Ad esempio, in un'architettura eterogenea che ha due (2) cluster con quattro (4) core:
- cluster0 consiste di cpu0-3
- cluster1 è costituito da cpu4-7
Il framework Android utilizza questi numeri di core della CPU quando legge le statistiche dai file sysfs
in: /sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Esempio di CPU cluster e velocità:
<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>
Valori di potenza
La tabella seguente descrive le impostazioni dei valori di potenza disponibili. Per visualizzare il file di esempio in AOSP, vedere power_profile.xml .
Nome | Descrizione | Valore di esempio | Appunti |
---|---|---|---|
ambiente.on | Potenza aggiuntiva utilizzata quando lo schermo è in modalità doze/ambient/always-on anziché off. | circa 100mA | - |
schermo.acceso | Potenza aggiuntiva utilizzata quando lo schermo è acceso alla luminosità minima. | 200 mA | Include controller touch e retroilluminazione del display. A luminosità 0, non il minimo Android che tende ad essere del 10 o del 20%. |
schermo.pieno | Potenza aggiuntiva utilizzata quando lo schermo è alla massima luminosità, rispetto allo schermo alla luminosità minima. | 100 mA-300 mA | Una frazione di questo valore (basata sulla luminosità dello schermo) viene aggiunta al valore screen.on per calcolare il consumo energetico dello schermo. |
wifi.on | Potenza aggiuntiva utilizzata quando il Wi-Fi è attivo ma non riceve, trasmette o scansiona. | 2 mA | - |
wifi.attivo | Potenza aggiuntiva utilizzata durante la trasmissione o la ricezione tramite Wi-Fi. | 31 mA | - |
wifi.scan | Potenza aggiuntiva utilizzata quando il Wi-Fi esegue la scansione dei punti di accesso. | 100 mA | - |
Audio | Potenza aggiuntiva utilizzata durante la decodifica/codifica audio tramite DSP. | circa 10 mA | Utilizzato per l'audio DSP. |
video | Potenza aggiuntiva utilizzata durante la decodifica video tramite DSP. | circa 50 mA | Usato per video DSP. |
camera.avg | Consumo energetico medio da parte del sottosistema della telecamera per un'applicazione tipica della telecamera. | 600 mA | Inteso come stima approssimativa per un'applicazione che esegue un'anteprima e acquisisce circa 10 immagini a piena risoluzione al minuto. |
fotocamera.torcia | Potenza media utilizzata dal modulo flash della fotocamera quando è acceso. | 200 mA | - |
gps.basato sulla qualità del segnale | Potenza aggiuntiva utilizzata dal GPS in base alla potenza del segnale. Questa è una voce multivalore, una per intensità del segnale, dal più debole al più forte. | 30 mA, 10 mA | - |
gps.on | Potenza aggiuntiva utilizzata quando il GPS sta acquisendo un segnale. | 50 mA | - |
radio.attivo | Potenza aggiuntiva utilizzata quando la radio cellulare sta trasmettendo/ricevendo. | 100 mA-300 mA | - |
radio.scansione | Potenza aggiuntiva utilizzata quando la radio cellulare sta chiamando la torre. | 1,2 mA | - |
radio.accesa | Potenza aggiuntiva utilizzata quando la radio cellulare è attiva. Questa è una voce con più valori, uno per intensità del segnale (nessun segnale, debole, moderato, forte). | 1,2 mA | Alcune radio aumentano la potenza quando cercano una torre cellulare e non rilevano un segnale. I valori possono essere gli stessi o diminuire all'aumentare della potenza del segnale. Se fornisci un solo valore, lo stesso valore viene utilizzato per tutti i punti di forza. Se fornisci due valori, il primo viene utilizzato per assenza di segnale, il secondo valore viene utilizzato per tutte le altre intensità e così via. |
bluetooth.controller.idle | Assorbimento di corrente medio (mA) del controller Bluetooth quando è inattivo. | - | Questi valori non sono stimati, ma presi dalla scheda tecnica del controllore. Se sono presenti più stati di ricezione o trasmissione, viene presa la media di tali stati. Inoltre, il sistema ora raccoglie i dati per le scansioni Low Energy (LE) e Bluetooth . Android 7.0 e versioni successive non utilizzano più i valori di potenza Bluetooth per bluetooth.active (utilizzato durante la riproduzione audio tramite Bluetooth A2DP) e bluetooth.on (utilizzato quando il Bluetooth è attivo ma inattivo). |
bluetooth.controller.rx | Assorbimento di corrente medio (mA) del controller Bluetooth durante la ricezione. | - | |
bluetooth.controller.tx | Assorbimento di corrente medio (mA) del controller Bluetooth durante la trasmissione. | - | |
bluetooth.controller.voltaggio | Tensione operativa media (mV) del controller Bluetooth. | - | |
modem.controller.inattivo | Assorbimento di corrente medio (mA) del controller del modem quando è inattivo. | 0 mA | Questi valori non sono stimati, ma presi dalla scheda tecnica del controllore. Se sono presenti più stati di ricezione, viene presa la media di tali stati. Se sono presenti più stati di trasmissione, la specifica di un valore per ogni stato di trasmissione è supportata a partire da Android 9. |
modem.controller.inattivo | Assorbimento di corrente medio (mA) del controller del modem quando è inattivo. | - | |
modem.controller.rx | Assorbimento di corrente medio (mA) del controller del modem durante la ricezione. | - | |
modem.controller.tx | Assorbimento di corrente medio (mA) del controller del modem durante la trasmissione a diversi livelli di potenza RF. Questa è una voce multivalore con un valore per livello di potenza di trasmissione. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controllore.tensione | Tensione operativa media (mV) del controller del modem. | - | |
wifi.controller.idle | Assorbimento medio di corrente (mA) del controller Wi-Fi quando è inattivo. | - | Questi valori non sono stimati, ma presi dalla scheda tecnica del controllore. Se sono presenti più stati di ricezione o trasmissione, viene presa la media di tali stati. |
wifi.controller.rx | Assorbimento di corrente medio (mA) del controller Wi-Fi durante la ricezione. | - | |
wifi.controller.tx | Assorbimento di corrente medio (mA) del controller Wi-Fi durante la trasmissione. | - | |
wifi.controller.voltaggio | Tensione operativa media (mV) del controller Wi-Fi. | - | |
cpu.speeds | Questa è una voce multivalore che elenca ogni possibile velocità della CPU in KHz. | 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz | Il numero e l'ordine delle voci devono corrispondere alle voci mA in cpu.active. |
cpu.idle | Potenza totale assorbita dal sistema quando le CPU (e il SoC) si trovano nello stato di sospensione del sistema. | 3 mA | - |
cpu.attiva | Potenza aggiuntiva utilizzata quando le CPU sono in stato di inattività di programmazione (loop inattivo del kernel); il sistema non è nello stato di sospensione del sistema. | 50 mA | La tua piattaforma potrebbe avere più di uno stato inattivo in uso con diversi livelli di consumo energetico; scegliere uno stato di inattività rappresentativo per periodi più lunghi di inattività dello scheduler (diversi millisecondi). Esamina il grafico della potenza sulla tua apparecchiatura di misurazione e scegli i campioni in cui la CPU ha il consumo minimo, scartando i campioni più alti in cui la CPU è rimasta inattiva. |
cpu.attivo | Potenza aggiuntiva utilizzata dalle CPU durante l'esecuzione a velocità diverse. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Il valore rappresenta la potenza utilizzata dai binari della CPU durante l'esecuzione a velocità diverse. Imposta la velocità massima nel kernel su ciascuna delle velocità consentite e aggancia la CPU a quella velocità. Il numero e l'ordine delle voci corrispondono al numero e all'ordine delle voci in cpu.speeds. |
cpu.clusters.cores | Numero di core contenuti in ogni cluster di CPU. | 4, 2 | Richiesto solo per dispositivi con architetture di CPU eterogenee . Il numero di voci e l'ordine devono corrispondere al numero di voci del cluster per cpu.active e cpu.speeds. La prima voce rappresenta il numero di core CPU nel cluster0, la seconda voce rappresenta il numero di core CPU nel cluster1 e così via. |
capacità della batteria | Capacità totale della batteria in mAh. | 3000 mAh | - |
Low Energy (LE) e scansioni Bluetooth
Per i dispositivi che eseguono Android 7.0, il sistema raccoglie i dati per le scansioni Low Energy (LE) e il traffico di rete Bluetooth (come RFCOMM e L2CAP) e associa queste attività all'applicazione di avvio. Le scansioni Bluetooth sono associate all'applicazione che ha avviato la scansione, ma le scansioni batch non lo sono (e sono invece associate all'applicazione Bluetooth). Per un'applicazione che esegue la scansione per N millisecondi, il costo della scansione è N millisecondi di tempo rx e N millisecondi di tempo tx; tutto il tempo rimanente del controller viene assegnato al traffico di rete o all'applicazione Bluetooth.