Leistungswerte messen

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

Um Werte für Leistungsprofile zu ermitteln, verwenden Sie Hardware, die die vom Gerät verbrauchte Leistung misst und die verschiedenen Vorgänge ausführt, für die Informationen benötigt werden. Messen Sie den Stromverbrauch während dieser Vorgänge und berechnen Sie die Werte (wobei gegebenenfalls Unterschiede zu anderen Basis-Stromverbrauchswerten abgeleitet werden).

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

Geräte mit Bluetooth-, Modem- und WLAN-Controllern mit Android 7.0 und höher können zusätzliche Leistungswerte bereitstellen, die aus Chipsatzdaten ermittelt 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 dem aktiven CPU-Stromverbrauch und den 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. Beispielsweise in einer heterogenen Architektur mit zwei (2) Clustern und 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. Informationen zur Anzeige der Beispieldatei in AOSP finden Sie unter power_profile.xml .

Name Beschreibung Beispielwert Anmerkungen
ambient.on Zusätzlicher Strom wird verbraucht, wenn sich der Bildschirm im Schlaf-/Umgebungs-/Immer-Ein-Modus statt im Aus-Modus befindet. etwa 100 mA -
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 bei 10 oder 20 % liegt.
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.
WLAN.ein Zusätzlicher Stromverbrauch, wenn Wi-Fi eingeschaltet ist, aber nicht empfängt, sendet oder scannt. 2mA -
WLAN.aktiv Zusätzlicher Stromverbrauch beim Senden oder Empfangen über WLAN. 31mA -
wifi.scan Zusätzlicher Stromverbrauch, wenn WLAN nach Zugangspunkten sucht. 100mA -
Audio- Zusätzlicher Stromverbrauch bei der Audiodekodierung/-kodierung über DSP. ca. 10 mA Wird für DSP-Audio verwendet.
Video Zusätzlicher Stromverbrauch bei der Videodekodierung über DSP. etwa 50 mA Wird für DSP-Video verwendet.
Kamera.Durchschn Durchschnittlicher Stromverbrauch des Kamerasubsystems für eine typische Kameraanwendung. 600 mA Gedacht als grobe Schätzung für eine Anwendung, die eine Vorschau ausführt und etwa 10 Bilder in voller Auflösung pro Minute aufnimmt.
Kamera.Taschenlampe Durchschnittliche Leistung, die das Blitzmodul der Kamera im eingeschalteten Zustand verbraucht. 200mA -
GPS-Signalqualitätbasiert Zusätzliche Leistung, die GPS basierend auf der Signalstärke verbraucht. Dies ist ein mehrwertiger Eintrag, einer pro Signalstärke, vom schwächsten zum stärksten. 30mA, 10mA -
GPS.ein Zusätzlicher Stromverbrauch, wenn GPS ein Signal empfängt. 50mA -
radioaktiv Zusätzlicher Stromverbrauch beim Senden/Empfangen des Mobilfunks. 100mA-300mA -
Radioscannen Zusätzlicher Stromverbrauch, wenn Mobilfunk den Turm ruft. 1,2mA -
radio.on Zusätzlicher Stromverbrauch, wenn der Mobilfunk 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 mit zunehmender Signalstärke gleich sein oder abnehmen. Wenn Sie nur einen Wert angeben, wird für alle Stärken derselbe Wert verwendet. Wenn Sie zwei Werte angeben, wird der erste Wert 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 Ruhezustand. - 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 ermittelt. 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 bei der Audiowiedergabe ü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. 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 Übertragungszustände vorhanden sind, wird die Angabe eines Werts für jeden Übertragungszustand ab Android 9 unterstützt.
modem.controller.idle 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 Modem-Controllers beim Senden mit unterschiedlichen HF-Leistungspegeln. Dies ist ein mehrwertiger Eintrag mit einem Wert pro Sendeleistungsstufe. 100mA, 200mA, 300mA, 400mA, 500mA
Modem-Controller-Spannung Durchschnittliche Betriebsspannung (mV) des Modem-Controllers. -
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 ermittelt.
wifi.controller.rx Durchschnittliche Stromaufnahme (mA) des Wi-Fi-Controllers beim Empfang. -
wifi.controller.tx Durchschnittliche Stromaufnahme (mA) des Wi-Fi-Controllers beim Senden. -
WLAN-Controller-Spannung Durchschnittliche Betriebsspannung (mV) des Wi-Fi-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 mit den mA-Einträgen in cpu.active übereinstimmen.
cpu.idle Gesamtstromaufnahme des Systems, wenn sich CPUs (und SoC) im System-Suspend-Zustand befinden. 3mA -
cpu.awake Zusätzlicher Stromverbrauch, wenn sich CPUs im Scheduling-Leerlaufzustand befinden (Kernel-Leerlaufschleife); Das System befindet sich nicht im System-Suspend-Zustand. 50mA Möglicherweise wird auf Ihrer Plattform mehr als ein Ruhezustand mit unterschiedlichem Stromverbrauch verwendet. Wählen Sie einen repräsentativen Ruhezustand für längere Leerlaufzeiten des Schedulers (mehrere Millisekunden). Untersuchen Sie das Leistungsdiagramm Ihrer Messgeräte und wählen Sie Stichproben aus, bei denen die CPU ihren niedrigsten Verbrauch aufweist. Höhere Stichproben, bei denen die CPU nicht mehr im Leerlauf ist, werden verworfen.
cpu.aktiv Zusätzliche Leistung, die CPUs bei unterschiedlichen Geschwindigkeiten verbrauchen. 100mA, 120mA, 140mA, 160mA, 200mA Der Wert stellt die Leistung dar, die die CPU-Schienen bei unterschiedlichen Geschwindigkeiten verbrauchen. Stellen Sie die maximale Geschwindigkeit im Kernel auf jede der zulässigen Geschwindigkeiten ein und fixieren Sie die CPU auf diese Geschwindigkeit. Die Anzahl und Reihenfolge der Einträge entspricht 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 heterogenen CPU-Architekturen erforderlich. Die Anzahl der Einträge und die Reihenfolge sollten mit der Anzahl der Clustereinträ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, Batch-Scans hingegen nicht (und stattdessen mit der Bluetooth-Anwendung). Bei einer Anwendung, die N Millisekunden lang scannt, belaufen sich die Scankosten auf N Millisekunden Empfangszeit und N Millisekunden Sendezeit. Die gesamte verbleibende Controller-Zeit wird dem Netzwerkverkehr oder der Bluetooth-Anwendung zugewiesen.