I produttori di dispositivi devono fornire un profilo di alimentazione dei componenti
/frameworks/base/core/res/res/xml/power_profile.xml
.
Per determinare i valori dei profili di potenza, utilizzare hardware che misura la potenza essere utilizzato dal dispositivo ed eseguire le varie operazioni per le quali informazioni necessarie. Misura il consumo di energia durante queste operazioni e i valori (ricavando le differenze rispetto ad altri utilizzi della potenza di base in base alle esigenze).
Poiché l'obiettivo di un profilo di potenza è stimare in modo appropriato il consumo della batteria, I valori del profilo di potenza sono espressi in corrente (amp). Framework Android moltiplica la corrente per l'ora in cui il sottosistema era attivo calcola il valore di mAh, che viene poi utilizzato per stimare la quantità di batteria svuotato dall'app o dal sottosistema.
Dispositivi con controller Bluetooth, modem e Wi-Fi e Android 7.0 e un valore più alto può fornire valori di potenza aggiuntivi ottenuti dai dati del chipset.
Dispositivi con CPU eterogenee
Il profilo di potenza dei dispositivi con core CPU con 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 ogni cluster.
- Consumo energetico della CPU attivo per ogni cluster.
Per distinguere tra il consumo di energia della CPU attiva e la CPU supportata velocità per i cluster, aggiungi il relativo numero al nome dell'array. Gruppo i numeri sono assegnati in ordine di core della CPU nella struttura ad albero dei dispositivi del kernel. Per Ad esempio, in un'architettura eterogenea che include due (2) cluster con quattro (4) core:
- cluster0 è costituito da cpu0-3
- cluster1 è composto da cpu4-7
Il framework Android utilizza questi numeri dei core della CPU per la lettura delle statistiche
dai file sysfs
in:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Esempio di CPU e velocità dei 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>
Valori potenza
La tabella seguente descrive le impostazioni disponibili per i valori di potenza dell'alimentazione. Per visualizzare file di esempio in AOSP, consulta power_profile.xml.
Nome | Descrizione | Valore di esempio | Note |
---|---|---|---|
ambient.on | Consumo di energia aggiuntiva quando lo schermo è in modalità sospensione/ambient/sempre acceso anziché spento. | circa 100 mA | - |
schermo.on | Consumo di energia aggiuntiva quando lo schermo viene acceso al minimo di luminosità. | 200 mA | Include controller touch e retroilluminazione del display. Con luminosità pari a 0, non Minimo Android, che tende a essere del 10 o 20%. |
schermo.intero | Consumo di energia aggiuntiva quando lo schermo è alla massima luminosità, rispetto a schermo con luminosità minima. | 100 mA - 300 mA | Una frazione di questo valore (in base alla luminosità dello schermo) viene aggiunta al Il valore screen.on per calcolare il consumo energetico dello schermo. |
Wi-Fi.on | Consumo di energia aggiuntiva quando il Wi-Fi è attivo ma non riceve trasmettere o scansionare. | 2 mA | - |
wifi.attivo | Potenza aggiuntiva utilizzata per la trasmissione o la ricezione tramite Wi-Fi. | 31 mA | - |
wifi.scan | Utilizzo di energia aggiuntiva durante la ricerca di punti di accesso tramite Wi-Fi. | 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 | Utilizzato per i video DSP. |
fotocamera.avg | Consumo energetico medio da parte del sottosistema di una videocamera standard dell'app. | 600 mA | È da considerarsi una stima approssimativa per un'app che esegue un'anteprima. e acquisire circa 10 immagini alla massima risoluzione al minuto. |
fotocamera.torcia | Potenza media utilizzata dal modulo flash della fotocamera quando è acceso. | 200 mA | - |
gps.signalqualitybased | Potenza aggiuntiva utilizzata dal GPS in base alla potenza del segnale. Si tratta di una voce a più valori, una per intensità del segnale, dal più debole al più forte. | 30 mA, 10 mA | - |
gps.on | Potenza aggiuntiva utilizzata quando il GPS acquisisce il segnale. | 50 mA | - |
radio.attivo | Utilizzo di energia aggiuntiva durante la trasmissione/ricezione di segnali radio cellulari. | 100 mA - 300 mA | - |
radio.scanning | Potenza aggiuntiva utilizzata quando la radio cellulare effettua chiamate alla torre. | 1,2 mA | - |
radio.on | Consumo di energia aggiuntiva quando il segnale radio cellulare è acceso. Si tratta di una voce a più valori, una per intensità del segnale (nessun segnale, debole, moderato, forte). | 1,2 mA | Alcune radio aumentano l'energia quando cercano una torre cellulare e non rilevare un segnale. I valori possono essere uguali o diminuire con l'aumento del segnale forza maggiore. Se specifichi un solo valore, viene utilizzato lo stesso valore per tutte punti di forza. Se fornisci due valori, il primo viene utilizzato per nessun segnale, il secondo valore viene utilizzato per tutti gli altri punti di forza e così via. |
bluetooth.controller.idle | Assorbimento medio (mA) del controller Bluetooth quando inattivo. | - | Questi valori non sono stimati, ma sono presi dalla scheda tecnica di
il controller. Se ci sono più stati di ricezione o trasmissione, la media
di questi stati. Inoltre, ora il sistema raccoglie i dati per
Scansioni Low Energy (LE) e Bluetooth. Android 7.0 e versioni successive non utilizzano più i valori di potenza del Bluetooth per bluetooth.active (utilizzato per la riproduzione di audio tramite Bluetooth A2DP) e bluetooth.on (utilizzato quando il Bluetooth è attivo ma inattivo). |
controller.bluetooth.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.voltage | Tensione di funzionamento media (mV) del controller Bluetooth. | - | |
modem.controller.sleep | Assorbimento di corrente medio (mA) del controller modem in modalità di sospensione. | 0 mA | Questi valori non sono stimati, ma vengono presi dalla scheda tecnica del controller. Se ci sono più stati di ricezione, viene calcolata la media di questi stati. Se ci sono più stati di trasmissione, è supportata la specifica di un valore per ciascuno di essi a partire da Android 9. |
modem.controller.idle | 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 con una potenza RF diversa diversi. Si tratta di una voce a più valori con un valore per livello di potenza di trasmissione. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | Tensione operativa media (mV) del controller del modem. | - | |
wifi.controller.idle | Assorbimento di corrente medio (mA) del controller Wi-Fi quando inattivo. | - | Questi valori non sono stimati, ma sono presi dalla scheda tecnica di il controller. Se ci sono più stati di ricezione o trasmissione, la media di questi stati. |
controller.wifi.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. | - | |
tensione.controller.wifi | Tensione operativa media (mV) del controller Wi-Fi. | - | |
velocità.cpu | Si tratta di una voce a più valori 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) sono nel sistema stato di sospensione. | 3 mA | - |
cpu.sveglia | Consumo di energia aggiuntiva quando le CPU sono in stato di inattività pianificando lo stato di inattività (loop di inattività del kernel); se il sistema non è in stato di sospensione. | 50 mA | La tua piattaforma potrebbe avere più di uno stato di inattività in uso con diverse livelli di consumo di energia; scegli uno stato di inattività rappresentativo più lungo periodi di inattività dello scheduler (alcuni millisecondi). Esamina il grafico dell'accensione la tua apparecchiatura di misurazione e scegli campioni con i valori più bassi per la CPU del consumo, ignorando gli esempi più alti in cui la CPU è rimasta inattiva. |
cpu.attivo | Potenza aggiuntiva utilizzata dalle CPU quando vengono eseguite a velocità diverse. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Il valore rappresenta la potenza utilizzata dalle guide della CPU quando vengono eseguite a diverse velocità effettiva. Imposta la velocità massima nel kernel su ciascuna delle velocità e del peg consentite a quella velocità. Il numero e l'ordine delle voci corrispondono il numero e l'ordine delle voci in cpu.speeds. |
CPU.clusters.core | Numero di core contenuti in ciascun cluster CPU. | 4, 2 | Richiesto solo per i dispositivi con CPU eterogenea di archiviazione. Il numero di voci e l'ordine devono corrispondere al numero di nel cluster per cpu.active e cpu.speeds. La prima voce rappresenta di core CPU nel cluster 0, la seconda voce rappresenta il numero Core della CPU nel cluster1 e così via. |
batteria.capacity | Capacità totale della batteria in mAh. | 3000 mAh | - |
Scansioni Low Energy (LE) e Bluetooth
Per i dispositivi con Android 7.0, il sistema raccoglie dati per Low Energy (LE) scansioni e traffico di rete Bluetooth (come RFCOMM e L2CAP) e associati queste attività con l'app iniziale. Scansioni Bluetooth associate con l'app che ha avviato la scansione, ma le analisi batch non lo sono (e sono invece associati all'app Bluetooth). Per un'app scansione per N millisecondi, il costo della scansione è N millisecondi di tempo rx e N millisecondi di tempo di trasmissione; tutto il tempo residuo del controller è assegnato traffico di rete o l'app Bluetooth.