Leistungswerte messen

Die Gerätehersteller müssen ein Komponentenleistungsprofil in bieten /frameworks/base/core/res/res/xml/power_profile.xml .

Verwenden Sie zum Bestimmen von Werten für Energieprofile Hardware, die den vom Gerät verbrauchten Strom misst und die verschiedenen Vorgänge durchführt, für die Informationen benötigt werden. Messen Sie den Stromverbrauch während dieser Vorgänge und berechnen Sie die Werte (und leiten Sie gegebenenfalls Unterschiede zu anderen Basisstromverbrauchswerten ab).

Da das Ziel eines Leistungsprofils darin besteht, den Batterieverbrauch angemessen zu schätzen, werden die Leistungsprofilwerte in Strom (Ampere) angegeben. Das Android-Framework multipliziert den Strom mit der Zeit, für die 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 aus Chipsatzdaten liefern.

Geräte mit heterogenen CPUs

Das Leistungsprofil 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.
  • Aktive CPU-Leistungsaufnahme für jeden Cluster.

Um zwischen aktivem CPU-Leistungsverbrauch und unterstützten CPU-Geschwindigkeiten 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. In einer heterogenen Architektur mit zwei (2) Clustern mit vier (4) Kernen:

  • cluster0 besteht aus cpu0-3
  • Cluster1 besteht aus CPU4-7

Der Android - Framework verwendet diese CPU - Nummern Kern , wenn es Statistiken aus den liest sysfs - Dateien 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 anzeigen, sehen power_profile.xml .

Name Beschreibung Beispielwert Anmerkungen
ambient.on Zusätzliche Energie, die verwendet wird, wenn sich der Bildschirm im Doze/Ambient/Always-On-Modus anstatt im Off-Modus befindet. ca. 100 mA -
Bildschirm An Zusätzlicher Stromverbrauch, wenn der Bildschirm mit minimaler Helligkeit eingeschaltet wird. 200 mA Inklusive Touch-Controller und Display-Hintergrundbeleuchtung. Bei 0 Helligkeit nicht das Android-Minimum, das bei 10 oder 20 % liegt.
screen.full Zusätzlicher Stromverbrauch bei maximaler Bildschirmhelligkeit im Vergleich zum Bildschirm bei minimaler Helligkeit. 100 mA-300 mA Ein Bruchteil dieses Wertes (basierend auf der Bildschirmhelligkeit) wird dem Wert screen.on hinzugefügt, um den Stromverbrauch des Bildschirms zu berechnen.
wifi.ein Zusätzlicher Stromverbrauch, wenn Wi-Fi eingeschaltet ist, aber kein Empfangen, Senden oder Scannen. 2 mA -
wifi.aktiv Zusätzlicher Stromverbrauch beim Senden oder Empfangen über Wi-Fi. 31 mA -
wifi.scan Zusätzlicher Stromverbrauch, wenn Wi-Fi nach Zugangspunkten sucht. 100 mA -
Audio- Zusätzliche Leistung, die bei der Audiodecodierung/-codierung über DSP verbraucht wird. ca. 10 mA Wird für DSP-Audio verwendet.
Video Zusätzliche Leistung bei der Videodecodierung über DSP. ca. 50 mA Wird für DSP-Video verwendet.
Kamera.avg Durchschnittlicher Stromverbrauch des Kamera-Subsystems für eine typische Kameraanwendung. 600 mA Als grobe Schätzung für eine Anwendung gedacht, die eine Vorschau ausführt und ungefähr 10 Bilder in voller Auflösung pro Minute aufnimmt.
Kamera.Taschenlampe Durchschnittliche Leistung, die das Blitzmodul der Kamera im eingeschalteten Zustand verbraucht. 200 mA -
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.on Zusätzliche Energie, die verwendet wird, wenn GPS ein Signal erfasst. 50 mA -
radio.aktiv Zusätzliche Leistung, die beim Senden/Empfangen des Mobilfunks verwendet wird. 100 mA-300 mA -
radio.scanning Zusätzliche Energie, die verwendet wird, wenn Mobilfunk den Turm anruft. 1,2 mA -
radio.on Zusätzlicher Stromverbrauch, wenn das Mobilfunkgerät eingeschaltet ist. Dies ist ein mehrwertiger Eintrag, einer pro Signalstärke (kein Signal, schwach, mäßig, stark). 1,2 mA Einige Funkgeräte erhöhen die Leistung, wenn sie nach einem Mobilfunkmast suchen und kein Signal erkennen. Die Werte können gleich sein oder mit zunehmender Signalstärke abnehmen. Wenn Sie nur einen Wert angeben, wird für alle Stärken derselbe Wert verwendet. Wenn Sie zwei Werte angeben, wird der erste für kein Signal verwendet, der zweite Wert für alle anderen Stärken usw.
Bluetooth.Controller.Leerlauf Durchschnittliche Stromaufnahme (mA) des Bluetooth-Controllers im Leerlauf. - Diese Werte sind nicht geschätzt, sondern dem Datenblatt des Reglers entnommen. Wenn es mehrere Empfangs- oder Sendezustände gibt, wird der Durchschnitt dieser Zustände genommen. Darüber hinaus 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 beim Abspielen von Audio über Bluetooth A2DP verwendet) 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 Modem-Controllers im Ruhezustand. 0 mA Diese Werte sind nicht geschätzt, sondern dem Datenblatt des Reglers entnommen. Wenn es mehrere Empfangszustände gibt, wird der Durchschnitt dieser Zustände genommen. Bei mehreren Sendezuständen wird die Angabe eines Wertes für jeden Sendezustand ab Android 9 unterstützt.
Modem.Controller.Leerlauf Durchschnittliche Stromaufnahme (mA) des Modem-Controllers im Leerlauf. -
modem.controller.rx Durchschnittliche Stromaufnahme (mA) des Modem-Controllers 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. 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
Modem.Controller.Spannung Durchschnittliche Betriebsspannung (mV) des Modemcontrollers. -
wifi.controller.idle Durchschnittliche Stromaufnahme (mA) des Wi-Fi-Controllers im Leerlauf. - Diese Werte sind nicht geschätzt, 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 Wi-Fi-Controllers beim Empfang. -
wifi.controller.tx Durchschnittliche Stromaufnahme (mA) des WLAN-Controllers beim Senden. -
WLAN.Controller.Spannung Durchschnittliche Betriebsspannung (mV) des WLAN-Controllers. -
CPU.Geschwindigkeiten Dies ist ein Eintrag mit mehreren Werten, 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 Gesamtleistung, die das System verbraucht, wenn sich CPUs (und das SoC) im System-Suspend-Zustand befinden. 3 mA -
cpu.wach Zusätzliche Energie, die verwendet wird, wenn sich CPUs im Planungsleerlaufzustand befinden (Kernel-Leerlaufschleife); System befindet sich nicht im System-Suspend-Zustand. 50 mA Ihre Plattform hat möglicherweise mehr als einen Leerlaufzustand mit unterschiedlichem Stromverbrauch; Wählen Sie einen repräsentativen Ruhezustand für längere Zeiträume des Planer-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 im Leerlauf war.
cpu.aktiv Zusätzliche Leistung, die von CPUs verbraucht wird, wenn sie mit unterschiedlichen Geschwindigkeiten ausgeführt werden. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA Der Wert stellt die Leistung dar, die von den CPU-Schienen verbraucht wird, wenn sie mit unterschiedlichen Geschwindigkeiten betrieben werden. Setzen Sie die maximale Geschwindigkeit im Kernel auf jede der zulässigen Geschwindigkeiten und binden Sie die CPU auf diese Geschwindigkeit. Anzahl und Reihenfolge der Einträge entsprechen der Anzahl und Reihenfolge der Einträge in cpu.speeds.
cpu.cluster.cores Anzahl der Kerne, die jeder CPU-Cluster enthält. 4, 2 Erforderlich ist nur für Geräte mit heterogenen CPU - Architekturen . 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 sind mit der Anwendung verknüpft, die den Scan initiiert hat, Stapelscans jedoch nicht (und stattdessen mit der Bluetooth-Anwendung). Für eine Anwendung, die N Millisekunden lang scannt, betragen die Kosten der Überprüfung N Millisekunden Empfangszeit und N Millisekunden Sendezeit; die gesamte übrig gebliebene Controllerzeit wird dem Netzwerkverkehr oder der Bluetooth-Anwendung zugewiesen.