Kuro Games riduce il consumo energetico del 9,68% tramite Android Studio Power Profiler e ODPM per Wuthering Waves

Wuthering Waves è un gioco di ruolo d'azione ad alta fedeltà sviluppato da Kuro Games. L'ottimizzazione del consumo energetico è molto importante per offrire un'esperienza utente premium in modo sostenibile per sessioni di gioco lunghe.

Figura 1. Screenshot di Wuthering Waves

Android Studio ha introdotto Power Profiler di Hedgehog (2023.1.1) che può aiutare gli sviluppatori a comprendere i dati sul consumo energetico in base a On Device Power Rails Monitor (ODPM).

Con le funzionalità di profilazione energetica di Android Studio, puoi anche eseguire test A/B efficaci sul consumo energetico delle funzionalità della tua app per Android (come mostrato di seguito).

Figura 2. Screenshot di Power Profiler di Android Studio

Cosa è stato fatto

Kuro Games ha iniziato a utilizzare Power Profiler di Android Studio per capire in che modo il comportamento dei giochi influisce sul consumo energetico del dispositivo. Questa esperienza li ha portati a sviluppare uno strumento personalizzato basato su Perfetto e ODPM, che include i seguenti miglioramenti:

  • Visualizzazioni personalizzate: lo sviluppatore può filtrare le linee di potenza e preimpostare intervalli di tempo flessibili.
  • Migliore manutenzione: lo sviluppatore può caricare i dati sul consumo di energia nel proprio sistema di QA personalizzato e confrontarli tra le varie versioni del gioco.

Elabora i dati ODPM

Per accedere ai dati ODPM, Kuro Games ha utilizzato l'API Metric di Perfetto Trace Processor (Python) per elaborare avg_used_power_mw data di sessioni di 30 secondi dalla metrica android_powerrails, definita come AndroidPowerRails in proto di metriche Perfetto, nel seguente formato:

Power Rail Qualità grafica FPS Luminosità Consumo energetico medio Percentuale(per binario / totale)
power.rail.cpu.big Alto 30 Bassa 474,158 mW 14,70%
power.rail.cpu.mid Alto 30 Bassa 470,916 mW 14,60%
power.rail.cpu.little Alto 30 Bassa 438,662 mW 13,60%
power.rail.gpu Alto 30 Bassa 346,761 mW 10,70%
... ... ... ...

Identifica le linee di alimentazione con un consumo elevato

Non esiste un valore standard per ogni rail di alimentazione. Per identificare le linee di alimentazione con un elevato consumo di energia, Kuro Games ha creato test A/B utilizzando diversi casi di test, tra cui inattività, esecuzione e combattimento. È possibile identificare linee di alimentazione specifiche con valori chiaramente elevati confrontando i valori delle stesse linee di alimentazione. Confrontando le differenze di comportamento tra vari casi di test, la causa principale del problema di consumo di energia verrà individuata gradualmente.

Ottimizzazioni

Con i dati ODPM, Kuro Games può misurare il miglioramento di ogni scenario di ottimizzazione:

  • Modifica della strategia di pianificazione dei core della CPU e regolazione della priorità di diversi thread per ridurre il carico di lavoro dei core grandi
  • Precompilazione dell'oggetto PSO (Pipeline State Object) per ridurre il carico di lavoro di compilazione dello shader di runtime della CPU
  • Implementazione del culling PVS (Potentially Visible Sets) per ridurre il carico di lavoro di rendering della GPU
  • Baking offline shadow occlusion culling per ridurre il carico di lavoro di rendering della GPU

Per confrontare i risultati dei test in condizioni identiche e riproducibili, Kuro Games ha recuperato i dati ODPM in un caso di test utilizzando la stessa scena 3D e la stessa prospettiva della fotocamera con la stessa durata.

Risultati

Sfruttando i dati di ODPM e del profiling della potenza, Kuro Games ha ridotto il consumo di energia totale del 9,68%, da 3233 mW nella release di settembre (versione 0904) a 2920 mW nella release di novembre (versione 1.4 finale). La figura seguente illustra questa riduzione di potenza con impostazioni FPS e grafiche coerenti.

Figura 3. Differenze nei dati delle barre di potenza tra la versione di settembre e quella di novembre

I dati ODPM sono attualmente disponibili solo per i dispositivi Pixel 6 e versioni successive, ma i miglioramenti possono essere visualizzati su tutti i dispositivi Android tramite altre metriche, tra cui Utilizzo CPU, Utilizzo GPU e Batterystats. Ad esempio, Kuro Games ha registrato anche una riduzione complessiva dell'utilizzo della GPU del 9,6% nella stessa scena per Oppo Reno 5.

Inizia

Per i casi d'uso avanzati, puoi iniziare da Power Profiler o dai dati di Perfetto Power Rails.

I nomi delle barre di alimentazione ODPM sono specifici del dispositivo. Un nome della barra potrebbe essere "S2S_VDD_G3D". Per interpretare i dati del monitor della potenza corrispondenti, è necessaria una conoscenza specifica dell'hardware del dispositivo. A partire dal livello API Android 35, puoi utilizzare PowerMonitor da getSupportedPowerMonitors. Con PowerMonitor, puoi recuperare la mappatura tra le etichette di facile lettura e i nomi delle linee di alimentazione non elaborate impostati da ciascun OEM.

Per verificare il miglioramento sui dispositivi senza ODPM, puoi utilizzare le stime della frequenza della CPU, della frequenza della GPU e della larghezza di banda della memoria come sostituti del consumo energetico.

Risorse aggiuntive

Ottimizzare l'efficienza energetica