Kuro Games mengurangi konsumsi daya sebesar 9,68% melalui Android Studio Power Profiler dan ODPM untuk Wuthering Waves

Wuthering Waves adalah game RPG aksi fidelitas tinggi yang dikembangkan oleh Kuro Games. Mengoptimalkan konsumsi daya sangat penting untuk memberikan pengalaman pengguna premium secara berkelanjutan untuk sesi game yang lama.

Gambar 1. Screenshot Wuthering Waves

Android Studio memperkenalkan Power Profiler dari Hedgehog (2023.1.1) yang dapat membantu developer memahami data konsumsi daya berdasarkan Monitor Power Rail di Perangkat (ODPM).

Dengan kemampuan pembuatan profil daya di Android Studio, Anda juga dapat melakukan pengujian A/B konsumsi daya secara efektif untuk fitur aplikasi Android Anda (seperti yang ditunjukkan di bawah).

Gambar 2. Screenshot Power Profiler Android Studio

Apa yang mereka lakukan

Kuro Games memulai dengan menggunakan Power Profiler Android Studio untuk memahami pengaruh perilaku game terhadap konsumsi daya perangkat. Pengalaman ini mendorong mereka untuk mengembangkan alat yang disesuaikan berdasarkan Perfetto dan ODPM, yang menggabungkan peningkatan berikut:

  • Tampilan yang disesuaikan - developer dapat memfilter power rail dan menetapkan rentang waktu fleksibel.
  • Pemeliharaan yang lebih baik - developer dapat mengupload data konsumsi daya ke sistem QA yang disesuaikan dan membandingkan data di seluruh versi game.

Memproses data ODPM

Untuk mengakses data ODPM, Kuro Games menggunakan Perfetto Trace Processor (Python) Metric API untuk memproses avg_used_power_mw data sesi 30 detik dari metrik android_powerrails, yang ditentukan sebagai AndroidPowerRails dalam proto metrik Pertetto, ke dalam format berikut:

Power Rail Kualitas Grafik FPS Kecerahan Konsumsi Daya rata-rata Persentase(Per Jalur / Total)
power.rail.cpu.big Tinggi 30 Rendah 474,158 mW 14,70%
power.rail.cpu.mid Tinggi 30 Rendah 470,916 mW 14,60%
power.rail.cpu.little Tinggi 30 Rendah 438,662 mW 13,60%
power.rail.gpu Tinggi 30 Rendah 346,761 mW 10,70%
... ... ... ... ... ...

Mengidentifikasi power rail yang menggunakan daya tinggi

Tidak ada nilai standar untuk setiap power rail. Untuk mengidentifikasi power rail yang mengonsumsi daya tinggi, Kuro Games membuat pengujian A/B menggunakan berbagai kasus pengujian, termasuk idle, running, dan combating. Power rail tertentu dengan nilai yang jelas tinggi dapat diidentifikasi dengan membandingkan nilai power rail yang sama. Dengan membandingkan perbedaan perilaku di berbagai kasus pengujian, akar masalah konsumsi daya akan diketahui secara bertahap.

Pengoptimalan

Dengan data ODPM, Kuro Games dapat mengukur peningkatan setiap skenario pengoptimalan:

  • Mengubah strategi penjadwalan core CPU dan menyesuaikan prioritas berbagai thread untuk mengurangi beban kerja core besar
  • Mengompilasi PSO (Pipeline State Object) terlebih dahulu untuk mengurangi beban kerja kompilasi shader runtime CPU
  • Mengimplementasikan pemusnahan PVS (Set yang Mungkin Terlihat) untuk mengurangi beban rendering GPU
  • Membakar culling oklusi bayangan offline untuk mengurangi beban kerja rendering GPU

Untuk membandingkan hasil pengujian dalam kondisi yang identik dan dapat direproduksi, Kuro Games mengambil data ODPM dalam kasus pengujian menggunakan perspektif kamera dan tampilan 3D yang sama dengan durasi yang sama.

Hasil

Dengan memanfaatkan data dari ODPM dan pembuatan profil daya, Kuro Games mengurangi total konsumsi daya sebesar 9,68%, dari 3233 mW pada rilis September (versi 0904) menjadi 2920 mW pada rilis November (versi 1.4 final). Gambar berikut menjelaskan pengurangan daya ini dalam setelan FPS dan grafis yang konsisten.

Gambar 3. Perbedaan data power rail antara versi September dan versi November

Data ODPM saat ini hanya tersedia untuk perangkat Pixel 6 dan yang lebih baru, tetapi peningkatan dapat dilihat di semua perangkat Android melalui metrik lain, termasuk Penggunaan CPU, Penggunaan GPU, dan Batterystats. Misalnya, Kuro Games juga melihat pengurangan penggunaan GPU secara keseluruhan sebesar 9,6% dalam scene yang sama untuk Oppo Reno 5.

Memulai

Anda dapat memulai dari data Power Profiler, atau Perfetto Power Rails untuk kasus penggunaan lanjutan.

Nama Power Rail ODPM bersifat khusus per perangkat. Nama rel mungkin seperti "S2S_VDD_G3D"; pengetahuan khusus tentang hardware perangkat diperlukan untuk menafsirkan data monitor daya yang sesuai. Dari level API Android 35, Anda dapat menggunakan PowerMonitor dari getSupportedPowerMonitors. Dengan PowerMonitor, Anda dapat mengambil pemetaan antara label yang dapat dibaca manusia dan nama power rail mentah yang ditetapkan oleh setiap OEM.

Untuk memverifikasi peningkatan pada perangkat tanpa ODPM, Anda dapat menggunakan clock CPU, clock GPU, dan estimasi bandwidth memori sebagai proxy untuk konsumsi daya.

Referensi lainnya

Mengoptimalkan efisiensi daya