Misurare l'efficacia dei componenti

È possibile determinare il consumo energetico dei singoli componenti confrontando l'assorbimento di corrente dispositivo quando il componente è nello stato desiderato (ad esempio acceso, attivo, in scansione) e quando è disattivato. Misura la corrente media istantanea assorbita dal dispositivo a una nominale mediante un monitor dell'alimentazione esterna, come un alimentatore da banco o un strumenti di monitoraggio della batteria (come Monsoon Solution Inc. Power Monitor e software per utensili elettrici).

I produttori spesso forniscono informazioni sulla quantità corrente utilizzata da un singolo componente. Utilizza queste informazioni se rappresenta accuratamente l'assorbimento di corrente dalla batteria del dispositivo in pratica. Tuttavia, convalida i valori forniti dal produttore prima di utilizzarli sul tuo dispositivo profilo di potenza.

Controllare il consumo di corrente

Durante la misurazione, assicurati che il dispositivo non sia collegato a una fonte di ricarica esterna, ad esempio come connessione USB a un host di sviluppo utilizzato durante l'esecuzione di Android Debug Bridge (adb). Il dispositivo potrebbe assorbire corrente dall'host, riducendo così le misurazioni a livello della batteria. Evita USB Connessioni OTG (On-the-Go), in quanto il dispositivo OTG potrebbe assorbire corrente proveniente dal dispositivo sottoposto a test.

Escludendo il componente da misurare, il sistema deve funzionare a un livello di potenza costante per evitare misurazioni imprecise causate da cambiamenti in altri componenti. Sistema le attività che possono introdurre modifiche indesiderate alle misurazioni della potenza includono:

  • Attività di ricezione, trasmissione o scansione su rete mobile, Wi-Fi e Bluetooth. Quando non misura la potenza del segnale radio cellulare, imposta il dispositivo in modalità aereo e attiva il Wi-Fi o il Bluetooth come appropriato.
  • Schermo acceso/spento. I colori visualizzati quando lo schermo è acceso possono influire sull'assorbimento di energia su alcune tecnologie dello schermo. Disattiva lo schermo durante la misurazione dei valori per i componenti non a schermo.
  • Sospensione/ripresa del sistema. Lo stato di schermo disattivato può attivare una sospensione del sistema, mettere parti del dispositivo a bassa potenza o a spegnere. Ciò può influire sul consumo energetico componente da misurare e introdurre grandi variazioni nelle letture della potenza poiché il sistema periodicamente riprende a inviare allarmi, ecc. Per i dettagli, vedi Controllo del sistema sospensione.
  • CPU che cambiano velocità ed entrano/escono dallo stato di inattività dello scheduler a basso consumo. Durante il normale funzionamento, il sistema apporta frequenti regolazioni alla velocità della CPU, al numero di Core della CPU e altri stati core di sistema, come la velocità del bus di memoria e le tensioni delle linee di alimentazione associate a CPU e memoria. Durante il test, queste regolazioni influiscono sulle misurazioni della potenza:
    • Le operazioni di scalabilità della velocità della CPU possono ridurre la quantità di scaling di clock e tensione dei bus di memoria e altri componenti fondamentali del sistema.
    • L'attività di pianificazione può incidere sulla percentuale di tempo che le CPU trascorrono in stato di inattività a basso consumo. Per maggiori dettagli su come evitare che questi aggiustamenti si verifichino durante i test, consulta Controllo della velocità della CPU.

Ad esempio, Joe Droid vuole calcolare il valore screen.on per un dispositivo. Lui attiva la modalità aereo sul dispositivo, esegue il dispositivo in uno stato attuale stabile, mantiene la CPU costante di velocità e utilizza un wakelock parziale per impedire la sospensione del sistema. Joe gira il dispositivo schermo spento ed effettua una misurazione (200 mA). Quindi, Joe attiva lo schermo del dispositivo come minimo. ed effettua un'altra misurazione (300 mA). Il valore screen.on è 100 mA (300-200).

Nota: per i componenti che non hanno una forma d'onda piatta del consumo di corrente quando attiva (come rete radio cellulare o Wi-Fi), misura la corrente media nel tempo utilizzando una fonte di alimentazione di monitoraggio delle conversioni.

Quando utilizzi una fonte di alimentazione esterna al posto della batteria del dispositivo, il sistema potrebbe rilevare problemi dovuti a un termistore della batteria non collegato o ai pin dell'indicatore del livello del carburante integrati (ovvero un problema la lettura della temperatura della batteria o della capacità rimanente della batteria potrebbe causare l'arresto del kernel o di Android di sistema). Le batterie false possono fornire segnali che simulano la temperatura sui pin del termistore o dell'indicatore del carburante e lo stato di carica di un sistema normale, oltre a fornire utili cavi per per il collegamento a alimentatori esterni. In alternativa, puoi modificare il sistema in modo che ignori dati non validi dalla batteria mancante.

Sospensione del sistema di controllo

Questa sezione descrive come evitare lo stato di sospensione del sistema quando non si vuole che interferisca. con altre misurazioni e come misurare l'assorbimento dello stato di sospensione del sistema quando lo si che vogliamo misurare.

Evita la sospensione del sistema

La sospensione del sistema può introdurre variazioni indesiderate nelle misurazioni della potenza e posizionare i componenti del sistema in stati a bassa potenza, inappropriati per misurare l'utilizzo di potenza attiva. Per impedire al sistema di in pausa mentre lo schermo è spento, utilizza un wakelock parziale temporaneo. Utilizzando un cavo USB, connetti il dispositivo a un host di sviluppo, quindi esegui il comando seguente:

adb shell "echo temporary > /sys/power/wake_lock"

In wake_lock, lo stato Schermo spento non attiva una sospensione del sistema. Ricordati di scollegare il cavo USB dal dispositivo prima di misurare il consumo energetico.

Per rimuovere il wakelock:

adb shell "echo temporary > /sys/power/wake_unlock"

Misura la sospensione del sistema

Per misurare l'assorbimento di potenza durante lo stato di sospensione del sistema, misura il valore di cpu.idle nel profilo di potenza. Prima della misurazione:

  • Rimuovi i wakelock esistenti (come descritto sopra).
  • Metti il dispositivo in modalità aereo per evitare attività simultanee da parte del radio cellulare, che potrebbe essere eseguito su un processore separato dalle parti SoC controllate dalla sospensione del sistema.
  • Assicurati che il sistema sia in stato di sospensione:
    • Confermare che le letture correnti vengono impostate su un valore costante. Le letture devono rientrare nei valori previsti per il consumo energetico dello stato di sospensione del SoC più il consumo energetico del sistema che restano alimentati (come USB PHY).
    • Controllo dell'output della console di sistema in corso.
    • Controllo di indicazioni esterne dello stato del sistema (ad esempio, un LED che si spegne quando non è in sospensione).

Controlla le velocità della CPU

Le CPU attive possono essere portate online o messe offline, hanno la velocità di clock e sono Variazioni di tensione (probabilmente influenzando anche le velocità del bus di memoria e altri stati di alimentazione del core del sistema), e possono entrare in stati di inattività a basso consumo durante il loop di inattività del kernel. Quando misuri CPU diverse stati di potenza per il profilo di potenza, evita la varianza dell'assorbimento di potenza durante la misurazione di altri parametri. Il profilo di potenza presuppone che tutte le CPU abbiano le stesse velocità e caratteristiche di potenza disponibili.

Mentre misuri la potenza della CPU o se mantieni la potenza della CPU costante per effettuare altre misurazioni, mantieni il numero di CPU portate online costante (ad esempio, avere una CPU online e le altre offline/hot-plug). Mantenere inattive tutte le CPU tranne una in pianificazione può essere accettabile per il prodotto che consentono di analizzare i dati e visualizzare i risultati. L'interruzione del framework Android con adb shell stop può ridurre il sistema pianificazione dell'attività.

Devi specificare le velocità della CPU disponibili per il tuo dispositivo nel profilo di alimentazione Voce cpu.speeds. Per ottenere un elenco delle velocità della CPU disponibili, esegui:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

Queste velocità corrispondono alle misurazioni della potenza corrispondenti nel valore cpu.active.

Per le piattaforme in cui il numero di core portati online influisce notevolmente sul consumo energetico, potrebbe dover modificare il driver o il governatore cpufreq per la piattaforma. La maggior parte delle piattaforme supporta il controllo della velocità della CPU utilizzando il governor cpufreq dello spazio utente e usando le interfacce sysfs per impostare la velocità. Ad esempio, per impostare la velocità di 200 MHz su un sistema con una sola CPU o tutte le CPU che condividono un criterio cpufreq comune, utilizza la console di sistema o la shell adb per eseguire i seguenti comandi:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Nota: i comandi esatti variano a seconda dell'implementazione del cpufreq della piattaforma.

Questi comandi assicurano che la nuova velocità non rientri nei limiti consentiti, impostano la nuova velocità visualizza la velocità con cui la CPU è effettivamente in esecuzione (per la verifica). Se lo stato attuale la velocità minima prima dell'esecuzione è superiore a 200.000, potresti dover invertire l'ordine delle prime due righe o eseguire di nuovo la prima riga per ridurre la velocità minima prima impostare la velocità massima.

Per misurare il consumo di corrente di una CPU in esecuzione a varie velocità, utilizza la console di sistema per posizionare alla CPU in un loop associato alla CPU utilizzando il comando:

# while true; do true; done

Esegui la misurazione mentre viene eseguito il loop.

Alcuni dispositivi possono limitare la velocità massima della CPU mentre eseguono la limitazione termica a causa di un problema la misurazione della temperatura (ovvero, dopo aver eseguito CPU ad alta velocità per periodi prolungati). Cerca per tale limitazione, utilizzando l'output della console di sistema quando si effettuano misurazioni o controllando il log del kernel dopo la misurazione.

Per il valore cpu.awake, misura il consumo energetico quando l'impianto non è sospendere e non eseguire le attività. La CPU deve trovarsi in un loop di inattività dello scheduler a basso consumo , possibilmente eseguendo un'istruzione di attesa ARM dell'evento o in uno stato a basso consumo energetico specifico del SoC con una latenza di uscita rapida adatta all'uso in caso di inattività.

Per il valore cpu.active, misura l'alimentazione quando il sistema non è in modalità di sospensione e non esegue attività. Una CPU (di solito la CPU principale) dovrebbe eseguire l'attività, mentre tutte le altre CPU deve essere in stato di inattività.

Misurare la potenza dello schermo

Quando lo schermo è acceso, assicurati che normalmente gli altri dispositivi si accendano quando lo schermo è acceso sono attivate. Ad esempio, se normalmente il touchscreen e la retroilluminazione del display sono attivi e quando lo schermo è acceso, assicurati che questi dispositivi siano accesi quando effettui misurazioni per ottenere un esempio realistico di schermata sull'utilizzo della batteria.

Alcune tecnologie di visualizzazione variano nel consumo energetico in base ai colori visualizzati, le misurazioni della potenza variano notevolmente in base a ciò che è visualizzato sullo schermo al momento della misurazione. Durante la misurazione, assicurati che sullo schermo venga mostrato qualcosa con alimentazione caratteristiche di uno schermo realistico. Punta tra gli estremi di uno schermo completamente nero (che consuma meno energia per alcune tecnologie) e ha lo schermo completamente bianco. Una scelta comune è la visualizzazione di un programma nell'app di calendario, che presenta una combinazione di sfondo bianco ed elementi non bianchi.

Misura la carica dello schermo con la luminosità minima e massima del display/della retroilluminazione. Per impostare la luminosità minima:

  • Utilizza l'UI di Android (sconsigliato). Seleziona Impostazioni > Luminosità del display dispositivo di scorrimento fino alla luminosità minima del display. Tuttavia, l'UI di Android consente di impostare la luminosità solo su un minimo del 10-20% della luminosità possibile del pannello o della retroilluminazione e non consente l'impostazione una luminosità così bassa che lo schermo potrebbe non essere visibile senza un grande sforzo.
  • Utilizza un file sysfs (opzione consigliata). Se disponibile, utilizza un file sysfs per controllare della luminosità del pannello fino alla luminosità minima supportata dall'hardware.

Inoltre, se il file sysfs della piattaforma consente di girare il pannello LCD, touchscreen attivato e disattivato, utilizza il file per effettuare misurazioni con lo schermo acceso e spento. Altrimenti, imposta un wakelock parziale in modo che il sistema non venga sospeso, quindi attiva e disattiva il schermo con il tasto di accensione.

Misura la potenza del Wi-Fi

Esegui misurazioni Wi-Fi su una rete relativamente silenziosa. Evita di introdurre attività aggiuntive. Elaborazione di elevati volumi di traffico broadcast non correlati all'attività misurata.

Il valore wifi.on misura il consumo energetico quando il Wi-Fi è attivo, ma non che trasmette o riceve attivamente. Questo valore viene spesso misurato come delta tra l'estrazione attuale stato di sospensione del sistema (in sospensione) con Wi-Fi attivato o disattivato.

Il valore wifi.scan misura il consumo energetico durante una ricerca di reti Wi-Fi per l'accesso punti. Le applicazioni possono attivare ricerche di reti Wi-Fi utilizzando la classe WifiManager startScan()API. Puoi anche aprire Impostazioni > Wi-Fi, che esegue il punto di accesso esegue scansioni ogni pochi secondi con un evidente incremento del consumo energetico, ma è necessario sottrarre lo schermo dell'energia elettrica da queste misurazioni.

Nota: utilizza una configurazione controllata (ad esempio iperf) per generare la ricezione e la trasmissione della rete per via del traffico.