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.
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).
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.
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.