Kuro Games reduziert den Energieverbrauch um 9,68% mit dem Android Studio Power Profiler und ODPM für Wuthering Waves

Wuthering Waves ist ein High-Fidelity-Action-RPG von Kuro Games. Die Optimierung des Energieverbrauchs ist sehr wichtig, um bei langen Gaming-Sessions nachhaltig eine erstklassige Nutzererfahrung zu bieten.

Abbildung 1 Screenshot von Wuthering Waves

In Android Studio wurde der Power Profiler von Hedgehog (2023.1.1) eingeführt, mit dem Entwickler Daten zum Energieverbrauch basierend auf dem On Device Power Rails Monitor (ODPM) analysieren können.

Mit den Energieprofilierungsfunktionen in Android Studio können Sie auch den Energieverbrauch der Funktionen Ihrer Android-App effektiv mit A/B-Tests testen (siehe unten).

Abbildung 2. Screenshot des Android Studio Power Profilers

Vorgehensweise

Kuro Games hat zuerst den Android Studio Power Profiler verwendet, um zu verstehen, wie sich das Verhalten von Spielen auf den Energieverbrauch des Geräts auswirkt. Auf dieser Grundlage entwickelte das Team ein benutzerdefiniertes Tool auf Basis von Perfetto und ODPM mit den folgenden Verbesserungen:

  • Benutzerdefinierte Ansichten: Der Entwickler kann Stromversorgungsschienen filtern und flexible Zeiträume voreinstellen.
  • Bessere Wartung: Der Entwickler kann die Daten zur Leistungsaufnahme in sein benutzerdefiniertes QA-System hochladen und Daten zwischen den Spielversionen vergleichen.

ODPM-Daten verarbeiten

Um auf ODPM-Daten zuzugreifen, verwendete Kuro Games die Perfetto Trace Processor (Python) Metric API, um avg_used_power_mw data 30-Sekunden-Sitzungen aus dem Messwert android_powerrails zu verarbeiten, der in Pertetto metrics proto als AndroidPowerRails definiert ist, in das folgende Format:

Stromschiene Grafikqualität FPS Helligkeit Durchschnittlicher Stromverbrauch Prozentsatz(pro Schiene / insgesamt)
power.rail.cpu.big Hoch 30 Tief 474,158 mW 14,70%
power.rail.cpu.mid Hoch 30 Tief 470,916 mW 14,60%
power.rail.cpu.little Hoch 30 Tief 438,662 mW 13,60%
power.rail.gpu Hoch 30 Tief 346,761 mW 10,70%

Stromversorgungsleitungen mit hohem Stromverbrauch identifizieren

Es gibt keinen Standardwert für jede Versorgungsschiene. Um die Stromversorgungsstränge mit hohem Energieverbrauch zu identifizieren, führte Kuro Games A/B-Tests mit verschiedenen Testfällen durch, darunter Inaktivität, Ausführung und Kampf. Bestimmte Versorgungsrails mit offensichtlich hohen Werten können durch Vergleichen der Werte derselben Versorgungsrails identifiziert werden. Durch den Vergleich der Verhaltensunterschiede in verschiedenen Testfällen wird nach und nach die Ursache für das Problem mit dem Stromverbrauch ermittelt.

Optimierungen

Mit ODPM-Daten kann Kuro Games die Verbesserung jedes Optimierungsszenarios messen:

  • Änderung der CPU-Kern-Planungsstrategie und Anpassung der Priorität verschiedener Threads, um die Arbeitslast der großen Kerne zu reduzieren
  • Vorkompilieren des PSO (Pipeline State Object), um die Arbeitslast für die CPU-Shaderkompilierung bei der Laufzeit zu reduzieren
  • Implementierung von PVS (Potentially Visible Sets), um die GPU-Rendering-Arbeitslast zu reduzieren
  • Offline-Schattenausblendung zum Reduzieren der GPU-Rendering-Arbeitslast

Um Testergebnisse unter identischen und reproduzierbaren Bedingungen zu vergleichen, hat Kuro Games die ODPM-Daten in einem Testfall mit derselben 3D-Szene und Kameraperspektive mit derselben Dauer abgerufen.

Ergebnisse

Durch die Nutzung von Daten aus dem ODPM und dem Energieprofil konnte Kuro Games den Gesamtenergieverbrauch um 9, 68 % senken, von 3.233 mW im September-Release (Version 0904) auf 2.920 mW im November-Release (Version 1.4 final). Die folgende Abbildung zeigt diese Leistungseinsparung bei konstanten FPS- und Grafikeinstellungen.

Abbildung 3: Unterschiede bei den Daten zu Stromschienen zwischen der September- und der Novemberversion

ODPM-Daten sind derzeit nur für Google Pixel 6 und höher verfügbar. Verbesserungen sind jedoch auf allen Android-Geräten anhand anderer Messwerte wie CPU-Nutzung, GPU-Nutzung und Akkustatistiken zu sehen. Kuro Games konnte beispielsweise eine allgemeine Reduzierung der GPU-Nutzung in derselben Szene für Oppo Reno 5 um 9, 6% feststellen.

Erste Schritte

Sie können mit Power Profiler oder Perfetto Power Rails-Daten für erweiterte Anwendungsfälle beginnen.

Die Namen der ODPM-Stromversorgung sind gerätespezifisch. Ein Rail-Name kann beispielsweise „S2S_VDD_G3D“ lauten. Für die Interpretation der entsprechenden Daten des Energiemonitors sind spezielle Kenntnisse der Gerätehardware erforderlich. Ab Android API-Level 35 können Sie PowerMonitor von getSupportedPowerMonitors verwenden. Mit PowerMonitor können Sie die Zuordnung zwischen lesbaren Labels und den Namen der Rohstromversorgungen abrufen, die von den einzelnen OEMs festgelegt wurden.

Um die Verbesserung auf Geräten ohne ODPM zu überprüfen, können Sie CPU-Taktfrequenzen, GPU-Taktfrequenzen und Schätzungen der Arbeitsspeicherbandbreite als Proxy für den Energieverbrauch verwenden.

Weitere Informationen

Effizienz optimieren