Leistungswerte messen

Gerätehersteller müssen ein Komponenten-Energieprofil in /frameworks/base/core/res/res/xml/power_profile.xml .

Um Werte für Energieprofile zu bestimmen, verwenden Sie Hardware, die die vom Gerät verbrauchte Energie misst, und führen Sie die verschiedenen Vorgänge aus, für die Informationen benötigt werden. Messen Sie den Energieverbrauch während dieser Vorgänge und berechnen Sie die Werte (wobei gegebenenfalls Unterschiede zu anderen grundlegenden Energieverbrauchswerten abgeleitet werden).

Da das Ziel eines Leistungsprofils darin besteht, den Batterieverbrauch angemessen abzuschätzen, werden Leistungsprofilwerte in Strom (Ampere) angegeben. Das Android-Framework multipliziert den Strom mit der Zeit, in der das Subsystem aktiv war, und berechnet den mAh-Wert, der dann verwendet wird, um die von der Anwendung/dem Subsystem verbrauchte Batteriemenge abzuschätzen.

Geräte mit Bluetooth-, Modem- und Wi-Fi-Controllern mit Android 7.0 und höher können zusätzliche Leistungswerte liefern, die aus Chipsatzdaten gewonnen werden.

Geräte mit heterogenen CPUs

Das Energieprofil für Geräte mit CPU-Kernen heterogener Architektur muss die folgenden zusätzlichen Felder enthalten:

  • Anzahl der Gesamt-CPUs für jeden Cluster (ausgedrückt in cpu.clusters.cores).
  • Von jedem Cluster unterstützte CPU-Geschwindigkeiten.
  • Aktiver CPU-Stromverbrauch für jeden Cluster.

Um zwischen aktiver CPU-Leistungsaufnahme und unterstützter CPU-Geschwindigkeit für Cluster zu unterscheiden, hängen Sie die Clusternummer an den Namen des Arrays an. Clusternummern werden in der Reihenfolge der CPU-Kerne im Kernel-Gerätebaum zugewiesen. Beispiel: In einer heterogenen Architektur mit zwei (2) Clustern mit vier (4) Kernen:

  • Cluster0 besteht aus CPU0-3
  • Cluster1 besteht aus CPU4-7

Das Android-Framework verwendet diese CPU-Kernzahlen, wenn es Statistiken aus den sysfs -Dateien liest in: /sys/devices/system/cpu/cpu<number>/cpufreq/stats .

Beispiel für Cluster-CPUs und -Geschwindigkeiten:

<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>

Leistungswerte

Die folgende Tabelle beschreibt die verfügbaren Leistungswerteinstellungen. Um die Beispieldatei in AOSP anzuzeigen, siehe power_profile.xml .

Name Beschreibung Beispielwert Anmerkungen
ambient.on Zusätzlicher Stromverbrauch, wenn sich der Bildschirm im Doze/Ambient/Always-On-Modus befindet, anstatt ausgeschaltet zu sein. etwa 100mA -
Bildschirm An Zusätzlicher Stromverbrauch, wenn der Bildschirm bei minimaler Helligkeit eingeschaltet wird. 200mA Inklusive Touch-Controller und Display-Hintergrundbeleuchtung. Bei 0 Helligkeit nicht das Android-Minimum, das tendenziell 10 oder 20% beträgt.
Bildschirm.voll Zusätzlicher Stromverbrauch bei maximaler Bildschirmhelligkeit im Vergleich zum Bildschirm bei minimaler Helligkeit. 100mA-300mA Ein Bruchteil dieses Werts (basierend auf der Bildschirmhelligkeit) wird zum screen.on-Wert addiert, um den Stromverbrauch des Bildschirms zu berechnen.
wifi.ein Zusätzlicher Stromverbrauch, wenn Wi-Fi eingeschaltet ist, aber nicht empfangen, übertragen oder scannen. 2mA -
wifi.aktiv Zusätzlicher Stromverbrauch beim Senden oder Empfangen über Wi-Fi. 31mA -
wifi.scan Zusätzlicher Stromverbrauch, wenn Wi-Fi nach Zugangspunkten sucht. 100mA -
Audio- Zusätzliche Leistung, die bei der Audiodecodierung/-codierung über DSP verwendet wird. etwa 10mA Wird für DSP-Audio verwendet.
Video Zusätzliche Leistung bei der Videodekodierung über DSP. etwa 50mA Wird für DSP-Video verwendet.
Kamera.Durchschn Durchschnittlicher Stromverbrauch durch das Kamerasubsystem für eine typische Kameraanwendung. 600mA Als grobe Schätzung für eine Anwendung gedacht, die eine Vorschau ausführt und etwa 10 Bilder in voller Auflösung pro Minute aufnimmt.
Kamera.Taschenlampe Durchschnittlicher Stromverbrauch des Kamerablitzmoduls im eingeschalteten Zustand. 200mA -
gps.signalqualitätbasiert Zusätzliche Leistung, die von GPS verwendet wird, basierend auf der Signalstärke. Dies ist ein mehrwertiger Eintrag, einer pro Signalstärke, vom schwächsten zum stärksten. 30mA, 10mA -
gps.ein Zusätzlicher Stromverbrauch, wenn das GPS ein Signal erfasst. 50mA -
radio.aktiv Zusätzlicher Stromverbrauch beim Senden/Empfangen von Mobilfunknetzen. 100mA-300mA -
radioscanning Zusätzliche Energie, die verwendet wird, wenn das Mobilfunkgerät den Turm ruft. 1,2mA -
Radio.ein Zusätzlicher Stromverbrauch, wenn das Mobilfunknetz eingeschaltet ist. Dies ist ein mehrwertiger Eintrag, einer pro Signalstärke (kein Signal, schwach, mäßig, stark). 1,2mA Einige Funkgeräte erhöhen die Leistung, wenn sie nach einem Mobilfunkmast suchen und kein Signal erkennen. Die Werte können gleich bleiben oder mit zunehmender Signalstärke abnehmen. Wenn Sie nur einen Wert angeben, wird derselbe Wert für alle Stärken verwendet. Wenn Sie zwei Werte angeben, wird der erste für kein Signal verwendet, der zweite Wert für alle anderen Stärken und so weiter.
bluetooth.controller.idle Durchschnittliche Stromaufnahme (mA) des Bluetooth-Controllers im Leerlauf. - Diese Werte sind keine Schätzungen, sondern dem Datenblatt des Reglers entnommen. Wenn es mehrere Empfangs- oder Sendezustände gibt, wird der Durchschnitt dieser Zustände genommen. Außerdem sammelt das System jetzt Daten für Low Energy (LE)- und Bluetooth-Scans .

Android 7.0 und höher verwenden nicht mehr die Bluetooth-Leistungswerte für bluetooth.active (wird verwendet, wenn Audio über Bluetooth A2DP wiedergegeben wird) und bluetooth.on (wird verwendet, wenn Bluetooth eingeschaltet, aber inaktiv ist).
bluetooth.controller.rx Durchschnittliche Stromaufnahme (mA) des Bluetooth-Controllers beim Empfang. -
bluetooth.controller.tx Durchschnittliche Stromaufnahme (mA) des Bluetooth-Controllers beim Senden. -
bluetooth.controller.spannung Durchschnittliche Betriebsspannung (mV) des Bluetooth-Controllers. -
modem.controller.sleep Durchschnittliche Stromaufnahme (mA) des Modemcontrollers im Ruhezustand. 0mA Diese Werte sind keine Schätzungen, sondern dem Datenblatt des Reglers entnommen. Wenn es mehrere Empfangszustände gibt, wird der Durchschnitt dieser Zustände genommen. Wenn mehrere Übertragungsstatus vorhanden sind, wird die Angabe eines Werts für jeden Übertragungsstatus ab Android 9 unterstützt.
Modem.Controller.Leerlauf Durchschnittliche Stromaufnahme (mA) des Modemcontrollers im Leerlauf. -
modem.controller.rx Durchschnittliche Stromaufnahme (mA) des Modemcontrollers beim Empfang. -
modem.controller.tx Durchschnittliche Stromaufnahme (mA) des Modemcontrollers beim Senden mit unterschiedlichen HF-Leistungspegeln. Dies ist ein mehrwertiger Eintrag mit einem Wert pro Sendeleistungspegel. 100mA, 200mA, 300mA, 400mA, 500mA
Modem.Controller-Spannung Durchschnittliche Betriebsspannung (mV) des Modemcontrollers. -
wifi.controller.idle Durchschnittliche Stromaufnahme (mA) des Wi-Fi-Controllers im Leerlauf. - Diese Werte sind keine Schätzungen, sondern dem Datenblatt des Reglers entnommen. Wenn es mehrere Empfangs- oder Sendezustände gibt, wird der Durchschnitt dieser Zustände genommen.
wifi.controller.rx Durchschnittliche Stromaufnahme (mA) des WLAN-Controllers beim Empfang. -
wifi.controller.tx Durchschnittliche Stromaufnahme (mA) des Wi-Fi-Controllers beim Senden. -
wifi.controller.spannung Durchschnittliche Betriebsspannung (mV) des WLAN-Controllers. -
CPU-Geschwindigkeiten Dies ist ein mehrwertiger Eintrag, der jede mögliche CPU-Geschwindigkeit in KHz auflistet. 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz Anzahl und Reihenfolge der Einträge müssen den mA-Einträgen in cpu.active entsprechen.
cpu.idle Vom System aufgenommene Gesamtleistung, wenn sich die CPUs (und der SoC) im Suspend-Zustand des Systems befinden. 3mA -
CPU.wach Zusätzlicher Stromverbrauch, wenn sich CPUs im Scheduling-Leerlaufzustand befinden (Kernel-Leerlaufschleife); Das System befindet sich nicht im System-Suspend-Zustand. 50mA Ihre Plattform hat möglicherweise mehr als einen Leerlaufzustand mit unterschiedlichem Stromverbrauch; Wählen Sie einen repräsentativen Leerlaufzustand für längere Zeiträume des Scheduler-Leerlaufs (mehrere Millisekunden). Untersuchen Sie das Leistungsdiagramm Ihrer Messgeräte und wählen Sie Samples aus, bei denen die CPU den niedrigsten Verbrauch aufweist, und verwerfen Sie höhere Samples, bei denen die CPU den Leerlauf beendet hat.
cpu.aktiv Zusätzliche Leistung, die von CPUs verbraucht wird, wenn sie mit unterschiedlichen Geschwindigkeiten ausgeführt werden. 100mA, 120mA, 140mA, 160mA, 200mA Der Wert stellt die Leistung dar, die von den CPU-Schienen verbraucht wird, wenn sie mit unterschiedlichen Geschwindigkeiten ausgeführt werden. Stellen Sie die maximale Geschwindigkeit im Kernel auf jede der zulässigen Geschwindigkeiten ein und legen Sie die CPU auf diese Geschwindigkeit fest. Anzahl und Reihenfolge der Einträge entsprechen der Anzahl und Reihenfolge der Einträge in cpu.speeds.
cpu.clusters.cores Anzahl der Kerne, die jeder CPU-Cluster enthält. 4, 2 Nur für Geräte mit heterogener CPU - Architektur erforderlich . Anzahl der Einträge und Reihenfolge sollten mit der Anzahl der Cluster-Einträge für cpu.active und cpu.speeds übereinstimmen. Der erste Eintrag stellt die Anzahl der CPU-Kerne in Cluster0 dar, der zweite Eintrag stellt die Anzahl der CPU-Kerne in Cluster1 dar und so weiter.
Batteriekapazität Gesamtkapazität des Akkus in mAh. 3000 mAh -

Low Energy (LE) und Bluetooth-Scans

Bei Geräten mit Android 7.0 sammelt das System Daten für Low Energy (LE)-Scans und Bluetooth-Netzwerkverkehr (wie RFCOMM und L2CAP) und ordnet diese Aktivitäten der initiierenden Anwendung zu. Bluetooth-Scans werden der Anwendung zugeordnet, die den Scan initiiert hat, Batch-Scans jedoch nicht (und werden stattdessen der Bluetooth-Anwendung zugeordnet). Für eine Anwendung, die N Millisekunden lang scannt, betragen die Scankosten N Millisekunden Empfangszeit und N Millisekunden Sendezeit; Die gesamte verbleibende Zeit des Controllers wird dem Netzwerkverkehr oder der Bluetooth-Anwendung zugewiesen.