Energiewerte messen

Gerätehersteller müssen ein Leistungsprofil der Komponenten /frameworks/base/core/res/res/xml/power_profile.xml

Verwenden Sie Hardware, die die Leistung misst, um die Werte für Energieprofile zu ermitteln. die vom Gerät verwendet werden, und führen die verschiedenen Vorgänge aus, Informationen benötigt. Messen Sie den Stromverbrauch während dieser Vorgänge und berechnen Sie die Werte. Berücksichtigen Sie dabei gegebenenfalls Unterschiede zu anderen Baseline-Stromverbrauchswerten.

Da das Ziel eines Energieprofils darin besteht, den Akkuverbrauch angemessen zu schätzen, werden die Werte des Energieprofils in Ampere angegeben. Das Android-Framework multipliziert den aktuellen Wert mit der Zeit, in der das Subsystem aktiv war, und berechnet den mAh-Wert, mit dem dann der Akkustand geschätzt wird von der App oder dem Subsystem gelöscht werden.

Geräte mit Bluetooth-, Modem- und WLAN-Controllern mit Android 7.0 und höher können zusätzliche Leistungswerte aus den Chipsatzdaten liefern.

Geräte mit heterogenen CPUs

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

  • Gesamtzahl der 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 dem Stromverbrauch der aktiven CPU und der unterstützten CPU zu unterscheiden -Geschwindigkeit für Cluster, hängen Sie die Clusternummer an den Namen des Arrays an. Cluster Die Nummern werden in der Reihenfolge der CPU-Kerne in der Kernel-Gerätestruktur 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 beim Lesen von Statistiken aus den 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

In der folgenden Tabelle werden die verfügbaren Einstellungen für den Leistungswert beschrieben. So rufen Sie die Beispieldatei in AOSP, siehe power_profile.xml.

Name Beschreibung Beispielwert Hinweise
Ambient.on Zusätzlicher Stromverbrauch, wenn das Display im Stromsparmodus/Inaktivmodus/Always-On-Modus statt aus ist. ca. 100 mA -
screen.on Zusätzlicher Stromverbrauch, wenn das Display mit minimaler Helligkeit eingeschaltet ist. 200 mA Inklusive Touch-Controller und Hintergrundbeleuchtung des Displays. Bei einer Helligkeit von 0 %, nicht dem Android-Mindestwert von 10 oder 20 %.
screen.full Bei maximaler Helligkeit wird zusätzliche Energie verbraucht im Vergleich zu Display bei minimaler Helligkeit. 100 mA bis 300 mA Ein Bruchteil dieses Werts (basierend auf der Bildschirmhelligkeit) wird dem Screen.on-Wert, um den Stromverbrauch des Bildschirms zu berechnen.
wifi.on Wenn das WLAN eingeschaltet, aber nicht empfangen wird, wird zusätzliche Energie verbraucht, das Übertragen oder Scannen. 2 mA -
wifi.active Zusätzliche Energie, die beim Senden oder Empfangen über WLAN verbraucht wird. 31 mA -
wifi.scan Zusätzliche Energie, die beim WLAN-Scannen nach Zugangspunkten verbraucht wird. 100 mA -
Audio Zusätzliche Leistung bei der Audiodecodierung/-codierung über DSP. 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-Videos verwendet.
Kamera.Durchschn. Durchschnittlicher Stromverbrauch des Kamera-Subsystems für eine typische Kamera-App. 600 mA Dies ist eine grobe Schätzung für eine App, die eine Vorschau anzeigt und etwa 10 Bilder in voller Auflösung pro Minute aufnimmt.
camera.flashlight Durchschnittliche Leistung, die das Blitzmodul der Kamera im eingeschalteten Zustand verbraucht. 200 mA -
GPS-Signalqualität Zusätzlicher Stromverbrauch für GPS je nach Signalstärke. Dies ist ein Mehrfachwert, einer pro Signalstärke, von der schwächsten bis zur stärksten. 30 mA, 10 mA -
GPS auf Zusätzlicher Stromverbrauch, wenn GPS ein Signal empfängt. 50 mA -
radio.active Zusätzlicher Stromverbrauch beim Übertragen/Empfangen von Mobilfunkverbindungen 100 mA bis 300 mA -
radio.scanning Zusätzliche Energie, die verbraucht wird, wenn das Mobilfunkradio den Turm anruft. 1,2 mA -
radio.on Zusätzlicher Stromverbrauch bei aktivierter Mobilfunkverbindung. Das ist ein Eintrag mit mehreren Werten, eine pro Signalstärke (kein Signal, schwach, mäßig, stark). 1,2 mA Einige Funkschnittstellen erhöhen die Leistung, wenn sie nach einem Mobilfunkmasten suchen und kein Signal erkennen. Werte können gleich sein oder mit zunehmendem Signal abnehmen Stärke. Wenn Sie nur einen Wert angeben, wird für alle Werte derselbe Stärken. Wenn Sie zwei Werte angeben, wird der erste für kein Signal verwendet, der Wert der zweite Wert für alle anderen Stärken verwendet wird usw.
Bluetooth.controller.idle Durchschnittlicher Stromverbrauch (mA) des Bluetooth-Controllers im Ruhemodus. - Diese Werte sind keine Schätzungen, sondern stammen aus dem Datenblatt den Controller. Wenn mehrere Empfangs- oder Übertragungsstatus vorliegen, wird der Durchschnitt dieser Status ermittelt. Außerdem erhebt das System jetzt Daten für Low Energy (LE) und Bluetooth-Scans.

Unter Android 7.0 und höher werden die Bluetooth-Nutzungsdaten für „bluetooth.active“ (wird beim Abspielen von Audio über Bluetooth A2DP verwendet) und „bluetooth.on“ (wird verwendet, wenn Bluetooth aktiviert, aber inaktiv ist) nicht mehr verwendet.
Bluetooth-Controller.rx Durchschnittliche Stromaufnahme (mA) des Bluetooth-Controllers beim Empfang. -
Bluetooth.controller.tx Durchschnittliche Stromaufnahme (mA) des Bluetooth-Controllers bei der Übertragung. -
bluetooth.controller.voltage Durchschnittliche Betriebsspannung (mV) des Bluetooth-Controllers. -
Modem.controller.sleep Durchschnittliche Stromaufnahme (mA) des Modem-Controllers im Ruhemodus. 0 mA Diese Werte sind keine Schätzungen, sondern stammen aus dem Datenblatt des Controllers. Wenn es mehrere Empfangsstatus gibt, wird der Durchschnitt dieser Status ermittelt. Wenn es mehrere Übertragungsstatus gibt, wird ab Android 9 die Angabe eines Werts für jeden Übertragungsstatus unterstützt.
Modem.controller.idle Durchschnittlicher Stromverbrauch (mA) des Modem-Controllers im Leerlauf. -
modem.controller.rx Durchschnittliche Stromaufnahme (mA) des Modem-Controllers beim Empfang. -
modem.controller.tx Durchschnittliche Stromaufnahme (mA) des Modem-Controllers bei der Übertragung mit unterschiedlichen Funksignalstärken. Dies ist ein mehrwertiger Eintrag mit einem Wert pro Übertragungsleistungsstufe. 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
modem.controller.voltage Durchschnittliche Betriebsspannung (mV) des Modem-Controllers. -
wifi.controller.idle Durchschnittlicher Stromverbrauch (mA) des WLAN-Controllers im Ruhemodus. - Diese Werte sind keine Schätzungen, sondern stammen aus dem Datenblatt den Controller. Wenn es mehrere Empfangs- oder Sendestatus gibt, ist der Durchschnittswert dieser Staaten vergeben ist.
wifi.controller.rx Durchschnittliche Stromaufnahme (mA) des WLAN-Controllers beim Empfang. -
wifi.controller.tx Durchschnittlicher Stromverbrauch (mA) des WLAN-Controllers bei der Übertragung. -
wifi.controller.voltage Durchschnittliche Betriebsspannung (mV) des WLAN-Controllers. -
cpu.speeds Dies ist ein Mehrfachwert-Eintrag, in dem alle möglichen CPU-Geschwindigkeiten in KHz aufgeführt sind. 125.000 kHz, 250.000 kHz, 500.000 kHz, 1000.000 kHz, 1500.000 kHz Die Anzahl und Reihenfolge der Einträge muss den mA-Einträgen in „cpu.active“ entsprechen.
cpu.idle Gesamtleistung, die vom System verbraucht wird, wenn CPUs (und das SoC) im System eingesetzt werden gesperrt. 3 mA -
CPU.awake Zusätzliche Energie, die verbraucht wird, wenn die CPUs sich im Planungs-Ruhemodus (Kernel-Ruheschleife) befinden und das System nicht im Ruhemodus ist. 50 mA Ihre Plattform kann mehrere Inaktivitätsstatus mit unterschiedlichen den Energieverbrauch, repräsentativen Inaktivitätsstatus für längere Zeit auswählen Zeiträume, in denen der Planer inaktiv ist (mehrere Millisekunden). Untersuchen Sie das Leistungsdiagramm auf Ihre Messgeräte und wählen Sie Stichproben mit der niedrigsten CPU-Leistung aus. Verbrauch, wodurch höhere Stichproben verworfen werden, bei denen die CPU im Leerlauf war.
cpu.active Zusätzliche Leistung, die von CPUs bei unterschiedlichen Geschwindigkeiten verbraucht wird. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA Der Wert steht für die Leistung, die von den CPU-Schienen verbraucht wird, wenn sie mit unterschiedlichen Geschwindigkeit. Legen Sie die maximale Geschwindigkeit im Kernel auf jede der zulässigen Geschwindigkeiten fest und legen Sie die CPU auf diese Geschwindigkeit fest. Die Anzahl und Reihenfolge der Einträge entsprechen der Anzahl und Reihenfolge der Einträge in „cpu.speeds“.
cpu.clusters.cores Anzahl der Kerne in jedem CPU-Cluster. 4, 2 Nur für Geräte mit heterogenen CPU-Architekturen erforderlich. Anzahl der Einträge und Reihenfolge muss mit der Anzahl der für cpu.active und cpu.speeds. Der erste Eintrag steht für die Anzahl der CPU-Kerne in cluster0, der zweite Eintrag für die Anzahl der CPU-Kerne in cluster1 usw.
battery.capacity Die Akkukapazität insgesamt in mAh. 3.000 mAh -

Low Energy (LE) und Bluetooth-Scans

Auf Geräten mit Android 7.0 erfasst das System Daten für LE-Scans (Low Energy) und Bluetooth-Netzwerkverkehr (z. B. RFCOMM und L2CAP) und verknüpft diese Aktivitäten mit der App, die den Scan initiiert hat. Bluetooth-Scans werden mit der App verknüpft, die den Scan initiiert hat, Batch-Scans jedoch nicht (sie werden stattdessen mit der Bluetooth-App verknüpft). Für eine App Scannen für N Millisekunden, Kosten für den Scan betragen N Millisekunden der rx-Zeit und N Millisekunden der tx-Zeit. wird die gesamte verbleibende Controller-Zeit zugewiesen den Netzwerkverkehr oder die Bluetooth-App.