Leistung der Komponenten messen

Sie können den Stromverbrauch der einzelnen Komponenten ermitteln, indem Sie den Stromverbrauch wenn sich die Komponente im gewünschten Zustand befindet (z. B. „An“, „Aktiv“, „Scannen“) und wenn der Komponente ist deaktiviert. Die durchschnittliche momentane Strommenge messen, die auf dem Gerät in einem Nennspannung mithilfe eines externen Leistungsmonitors, z. B. eines Netzteils oder einer speziellen Akku-Überwachungstools (wie Monsoon Solution Inc. Power Monitor und Power Tool-Software).

Hersteller liefern häufig Informationen über den aktuellen Verbrauch einer einzelnen Komponente. Verwende diese Information, wenn sie den vom Geräteakku in zu üben. Überprüfen Sie jedoch die vom Hersteller bereitgestellten Werte, bevor Sie sie auf Ihrem Gerät verwenden. Energieprofil.

Stromverbrauch steuern

Achte bei der Messung darauf, dass das Gerät nicht mit einer externen Ladequelle verbunden ist, z. B. als USB-Verbindung zu einem Entwicklungshost, der beim Ausführen von Android Debug Bridge (ADB) verwendet wird. Das Gerät wird möglicherweise Strom vom Host gezogen, wodurch die Messungen am Akku reduziert werden. USB-Kabel vermeiden OTG-Verbindungen (On-the-Go), da das OTG-Gerät möglicherweise Strom aus dem zu testenden Gerät bezieht.

Ohne die zu messende Komponente sollte das System mit einer konstanten Leistung laufen. um ungenaue Messungen aufgrund von Änderungen anderer Komponenten zu vermeiden. System Aktivitäten, die unerwünschte Änderungen bei Leistungsmessungen zur Folge haben können, sind:

  • Daten über Mobilfunk, WLAN und Bluetooth empfangen, übertragen oder scannen. Wann? nicht messen, stellen Sie das Gerät in den Flugmodus und aktivieren Sie WLAN oder Bluetooth als angemessen sein.
  • Display ein/aus: Farben, die bei eingeschaltetem Bildschirm angezeigt werden, können sich auf den Stromverbrauch auswirken bei einigen Bildschirmtechnologien. Bildschirm ausschalten, wenn Werte für Nicht-Bildschirmkomponenten gemessen werden
  • System sperren/fortsetzen: Bei deaktiviertem Bildschirm kann das System gesperrt werden. Teile des Geräts mit geringem Energieverbrauch oder ausgeschaltet sind. Dies kann sich auf den Stromverbrauch der Komponente, die gemessen wird, und verursacht große Schwankungen bei den Leistungsmessungen, da das System regelmäßig setzt das Senden von Alarmen usw. fort. Weitere Informationen findest du unter System steuern. sperren.
  • CPUs, die die Geschwindigkeit ändern und den Inaktivitätsstatus des Planers mit geringem Stromverbrauch wechseln bzw. beenden. Während des Normalbetriebs nimmt das System häufig Änderungen an der CPU-Geschwindigkeit, der Anzahl der CPU-Kerne und andere Systemkernstatus wie die Speicherbusgeschwindigkeit und die Spannungen der Stromschienen die mit CPUs und dem Arbeitsspeicher verbunden sind. Während des Tests wirken sich diese Anpassungen auf die Leistungsmessungen aus: <ph type="x-smartling-placeholder">
      </ph>
    • Durch Skalierungsvorgänge für die CPU-Geschwindigkeit kann die Skalierung von Takt und Spannung von Speicherbussen reduziert werden. und andere Systemkernkomponenten.
    • Planungsaktivitäten können sich darauf auswirken, wie viel Prozent der Zeit CPUs bei Inaktivität mit geringem Energieverbrauch verbringen. Wie Sie verhindern, dass diese Anpassungen während des Tests erfolgen, erfahren Sie unter CPU-Geschwindigkeiten steuern

Beispiel: Joe Droid möchte den screen.on-Wert für ein Gerät berechnen. Er aktiviert den Flugmodus auf dem Gerät, führt das Gerät in einem stabilen aktuellen Zustand aus, enthält die CPU Geschwindigkeit konstant und verhindert einen partiellen Wakelock, um den Systemausfall zu verhindern. Dann dreht Joe das Gerät das Display aus und misst den Wert (200 mA). Als Nächstes schaltet Joe den Gerätebildschirm mindestens ein Helligkeit und eine weitere Messung (300 mA) durchführt. Der Wert screen.on ist 100 mA (300–200).

Hinweis: Wenn bei Komponenten, die keine flache Wellenform der Stromaufnahme haben, aktiv sind (z. B. Mobilfunk oder WLAN), messen Sie den durchschnittlichen Stromverbrauch im Zeitverlauf zur Überwachung.

Wenn Sie anstelle des Akkus des Geräts eine externe Stromquelle verwenden, kann das System Probleme aufgrund eines nicht verbundenen Batteriethermistors oder integrierter Kraftstoffanzeiger (z.B. ungültige Anschlüsse) kann das Lesen der Akkutemperatur oder der verbleibenden Akkukapazität dazu führen, dass der Kernel oder Android System). Gefälschte Batterien können Signale an die Pins des Thermistors oder der Kraftstoffanzeige senden, die die Temperatur imitieren. und den Ladezustand eines normalen Systems. Sie können auch praktische Hinweise für das Anschließen externer Netzteile an. Alternativ können Sie das System so ändern, dass ungültige Daten vom fehlenden Akku.

Systemausfall steuern

In diesem Abschnitt wird beschrieben, wie Sie den System-Sperrstatus vermeiden, wenn Sie nicht möchten, dass er sich stört. und wie Sie den Stromverbrauch des System-Aussetzungsstatus messen, messen möchten.

Sperrung des Systems verhindern

Das Sperren des Systems kann zu unerwünschten Schwankungen bei Leistungsmessungen und der Platzierung von Systemkomponenten führen in Energiesparmodusn, die für die Messung des aktiven Stromverbrauchs nicht geeignet sind. Um zu verhindern, dass das System bei ausgeschaltetem Bildschirm in den Ruhemodus wechseln und einen vorübergehenden partiellen Wakelock verwenden. Schließen Sie die Verbindung über ein USB-Kabel das Gerät an einen Entwicklungshost und führen Sie dann den folgenden Befehl aus:

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

Im wake_lock löst der Status „Bildschirm aus“ keinen Systemausfall aus. Trennen Sie das USB-Kabel vom Gerät, bevor Sie den Stromverbrauch messen.

So entfernen Sie den Wakelock:

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

Systemaussetzung messen

Um den Stromverbrauch während des System-Aussetzungszustands zu messen, messen Sie den Wert cpu.idle im Energieprofil. Vor der Messung:

  • Entfernen Sie vorhandene Wakelocks wie oben beschrieben.
  • Aktivieren Sie auf dem Gerät den Flugmodus, um gleichzeitige Aktivitäten des Mobilfunkanbieters zu vermeiden. kann auf einem Prozessor ausgeführt werden, der von den SoC-Teilen getrennt ist, die vom System-Aussetzen gesteuert werden.
  • So sorgen Sie dafür, dass sich das System im Ruhemodus befindet: <ph type="x-smartling-placeholder">
      </ph>
    • Bestätigen, dass sich die aktuellen Messwerte auf einen konstanten Wert befinden. Die Werte sollten innerhalb des erwarteten Bereichs liegen Bereich für den Stromverbrauch des SoC-Aussetzungsstatus zuzüglich des Stromverbrauchs des Systems Komponenten, die weiterhin mit Strom versorgt werden (z. B. USB PHY).
    • Ausgabe der Systemkonsole wird geprüft.
    • Auf externe Anzeichen des Systemstatus achten (z. B. eine LED, die sich ausschaltet, wenn sie nicht in sperren.

CPU-Geschwindigkeiten steuern

Aktive CPUs können online oder offline geschaltet werden, haben ihre Taktgeschwindigkeiten und Spannungen sich geändert haben (möglicherweise auch die Geschwindigkeit des Speicherbusses und die Stromversorgung anderer Systemkerne) und kann in der Kernel-Inaktivitätsschleife zu niedrigeren Inaktivitätsstatus führen. Bei der Messung unterschiedlicher CPU-Leistungen Energiestatus für das Leistungsprofil; vermeiden Sie beim Messen anderer Parameter die Varianz der Stromaufnahme. Beim Leistungsprofil wird davon ausgegangen, dass alle CPUs dieselben verfügbaren Geschwindigkeiten und Leistungsmerkmale haben.

Wenn Sie die CPU-Leistung messen oder die CPU-Leistung für andere Messungen konstant halten, Die Anzahl der CPUs ist konstant online (z. B. wenn eine CPU und der Rest online ist). offline/heißgesteckt). Wenn alle CPUs außer einer im Zeitplan inaktiv bleiben, kann das Produkt akzeptabel sein Ergebnisse. Das Beenden des Android-Frameworks mit adb shell stop kann das System verringern Aktivität planen.

Sie müssen die verfügbaren CPU-Geschwindigkeiten für Ihr Gerät im Leistungsprofil angeben cpu.speeds-Eintrag. Führen Sie den folgenden Befehl aus, um eine Liste der verfügbaren CPU-Geschwindigkeiten abzurufen:

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

Diese Geschwindigkeiten stimmen mit den entsprechenden Leistungsmessungen im Wert cpu.active überein.

Bei Plattformen, bei denen der Stromverbrauch durch die Anzahl der Kerne erheblich beeinflusst wird, müssen möglicherweise den cpufreq-Treiber oder den Gouverneur für die Plattform ändern. Die meisten Plattformen unterstützen und die CPU-Geschwindigkeit mit dem cpufreq-Regor für Userspace und mit sysfs-Schnittstellen Geschwindigkeit. Wenn Sie beispielsweise bei einem System mit nur einer CPU oder allen CPUs eine gemeinsame cpufreq-Richtlinie verwenden, verwenden Sie die Systemkonsole oder ADB-Shell, um die folgenden Befehle auszuführen:

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

Hinweis: Die genauen Befehle unterscheiden sich je nach der cpufreq-Implementierung der Plattform.

Mit diesen Befehlen wird sichergestellt, dass die neue Geschwindigkeit nicht außerhalb der zulässigen Grenzen liegt, gibt die Geschwindigkeit aus, mit der die CPU tatsächlich ausgeführt wird (zur Überprüfung). Wenn die aktuelle Mindestgeschwindigkeit vor der Ausführung höher als 200.000 ist, müssen Sie die Reihenfolge der ersten beiden Zeilen ein. Durch erneutes Ausführen der ersten Zeile wird die Mindestgeschwindigkeit vor der Höchstgeschwindigkeit.

Um den Stromverbrauch einer CPU mit unterschiedlicher Geschwindigkeit zu messen, platzieren Sie in einer CPU-gebundenen Schleife mithilfe des folgenden Befehls abrufen:

# while true; do true; done

Führen Sie die Messung durch, während die Schleife ausgeführt wird.

Einige Geräte können aufgrund einer hohen Temperaturmessung, d. h., nachdem CPUs über einen längeren Zeitraum mit hoher Geschwindigkeit ausgeführt wurden. Achten Sie auf entweder mithilfe der Systemkonsolenausgabe für Messungen oder durch Überprüfen der Kernel-Log nach der Messung.

Für den Wert cpu.awake wird der Energieverbrauch gemessen, wenn sich das System nicht in Aufgaben aussetzen und nicht ausführen. Die CPU sollte sich in einer Inaktivitätsschleife des Planers mit geringem Stromverbrauch befinden“ , möglicherweise wird eine ARM-Anweisung „Warte auf Ereignis“ oder in einem SoC-spezifischen Energiesparmodus mit geringem Energieverbrauch ausgeführt mit einer Latenz beim schnellen Beenden, die sich auch für Inaktivität eignet.

Für den Wert cpu.active messen Sie die Leistung, wenn sich das System nicht im Ruhemodus befindet, und Aufgaben nicht ausführen. Eine CPU (normalerweise die primäre CPU) sollte die Aufgabe ausführen, während alle anderen CPUs sollte sich im Ruhezustand befinden.

Leistung des Displays messen

Achte bei der Messung des Bildschirms bei eingeschaltetem Strom darauf, dass andere Geräte eingeschaltet sind, wenn das Display eingeschaltet ist aktiviert sind, sind auch eingeschaltet. Wenn beispielsweise der Touchscreen und die Hintergrundbeleuchtung des Displays wenn der Bildschirm eingeschaltet ist, achten Sie darauf, dass diese Geräte eingeschaltet sind, wenn Sie messen, um ein realistisches Beispiel für Bildschirm „Stromverbrauch“ angezeigt.

Der Stromverbrauch einiger Anzeigetechnologien hängt von den angezeigten Farben ab. Dies führt dazu, Leistungsmessungen stark variieren, je nachdem, was zum Zeitpunkt der zu messen. Achte bei der Messung darauf, dass auf dem Display etwas angezeigt wird, das mit Strom versorgt wird Eigenschaften eines realistischen Bildschirms. Zielen Sie sich zwischen den Extremen eines reinen schwarzen Bildschirms (die verbraucht bei einigen Technologien den niedrigsten Energieverbrauch) und einen komplett weißen Bildschirm. Häufig wird eine Ansicht verwendet, eines Zeitplans in der Kalender-App, die eine Mischung aus weißem Hintergrund und nicht-weißen Elementen hat.

Messen Sie die Leistung des Displays bei der minimalen und maximalen Display-/Hintergrundhelligkeit. So legen Sie die Mindesthelligkeit fest:

  • Android-UI verwenden (nicht empfohlen) Wählen Sie Einstellungen > Displayhelligkeit stellen Sie den Schieberegler auf die niedrigste Bildschirmhelligkeit. In der Android-Benutzeroberfläche kann die Helligkeit jedoch nur auf mindestens 10 bis 20% der möglichen Helligkeit des Displays oder der Hintergrundbeleuchtung entsprechen. die Helligkeit so gering, dass der Bildschirm ohne große Anstrengung möglicherweise nicht sichtbar ist.
  • Verwenden Sie eine sysfs-Datei (empfohlen). Verwenden Sie gegebenenfalls eine Sysfs-Datei zur Steuerung Helligkeit bis hinunter zur minimalen Helligkeit, die von der Hardware unterstützt wird.

Wenn die sysfs-Datei für die Plattform das Drehen des LCD-Bildschirms, der Hintergrundbeleuchtung und Touchscreen ein- und ausschalten und mit der Datei bei ein- und ausgeschaltetem Bildschirm Messungen vornehmen. Andernfalls Stellen Sie einen partiellen Wakelock ein, damit das System nicht in den Ruhemodus wechselt, und schalten Sie dann den mit der Ein/Aus-Taste.

WLAN-Leistung messen

WLAN-Messungen in einem relativ leisen Netzwerk durchführen Vermeiden Sie zusätzliche Arbeiten. Verarbeitung großer Mengen an Broadcast-Traffic, die nichts mit der gemessenen Aktivität zu tun haben.

Mit dem Wert wifi.on wird der Energieverbrauch gemessen, wenn WLAN aktiviert ist, jedoch nicht aktiv senden oder empfangen. Dies wird häufig als Delta zwischen der aktuellen System-Ruhezustand mit aktiviertem oder deaktiviertem WLAN

Der Wert wifi.scan gibt an, wie viel Strom während eines WLAN-Scans für den Zugriff verbraucht wurde. Punkte. Apps können WLAN-Scans mithilfe der WifiManager-Klasse auslösen <ph type="x-smartling-placeholder"></ph> startScan()API. Sie können auch die Einstellungen öffnen > WLAN als Zugangspunkt Scans alle paar Sekunden mit einem deutlichen Anstieg des Stromverbrauchs, aber du musst den Bildschirm entfernen Energie aus diesen Messungen ab.

Hinweis: Verwenden Sie eine kontrollierte Einrichtung (z. B. iperf), um Netzwerkempfang und -übertragung zu generieren Zugriffe.