Wuthering Waves, Kuro Games tarafından geliştirilen yüksek kaliteli bir aksiyon RYO oyunudur. Güç tüketimini optimize etmek, uzun oyun oturumlarında premium kullanıcı deneyimi sunmak için sürdürülebilir bir şekilde çok önemlidir.
Android Studio, geliştiricilerin Cihaz Üzerinde Güç Rayları İzleyici'ne (ODPM) dayalı güç tüketimi verilerini anlamasına yardımcı olabilecek Hedgehog'dan Power Profiler'ı (2023.1.1) kullanıma sundu.
Android Studio'daki güç profilleme özellikleriyle, Android uygulamanızın özellikleri için güç tüketimini etkili bir şekilde A/B testinden de geçirebilirsiniz (aşağıda gösterildiği gibi).
Ne yaptılar?
Kuro Games, oyun davranışlarının cihazın güç tüketimini nasıl etkilediğini anlamak için Android Studio Güç Tanımlayıcı'yı kullanmaya başladı. Bu deneyim, Perfetto ve ODPM'ye dayalı, aşağıdaki iyileştirmeleri içeren özel bir araç geliştirmelerine yol açtı:
- Özelleştirilmiş görünümler: Geliştirici, güç raylarını filtreleyebilir ve esnek zaman aralıklarını önceden ayarlayabilir.
- Daha iyi bakım: Geliştirici, güç tüketimi verilerini özelleştirilmiş QA sistemine yükleyebilir ve oyun sürümleri arasındaki verileri karşılaştırabilir.
ODPM verilerini işleme
Kuro Games, ODPM verilerine erişmek için Perfetto metrik protosunda AndroidPowerRails
olarak tanımlanan android_powerrails
metriğinden 30 saniyelik oturum avg_used_power_mw data
'sini aşağıdaki biçimde işlemek üzere Perfetto Trace Processor (Python) Metric API'yi kullandı:
Güç Rayı | Grafik kalitesi | FPS | Parlaklık | Ortalama güç tüketimi | Yüzde(Ray Başına / Toplam) |
---|---|---|---|---|---|
power.rail.cpu.big | Yüksek | 30 | Düşük | 474,158 mW | %14,70 |
power.rail.cpu.mid | Yüksek | 30 | Düşük | 470,916 mW | %14,60 |
power.rail.cpu.little | Yüksek | 30 | Düşük | 438,662 mW | %13,60 |
power.rail.gpu | Yüksek | 30 | Düşük | 346,761 mW | %10,70 |
... | ... | ... | ... | ... | ... |
Yüksek güç tüketen güç hatlarını belirleme
Her güç rayı için standart bir değer yoktur. Kuro Games, yüksek güç tüketen güç hatlarını belirlemek için boşta kalma, koşma ve savaşma gibi farklı test örneklerini kullanarak A/B testleri oluşturdu. Açıkça yüksek değerlere sahip belirli güç rayları, aynı güç raylarının değerleri karşılaştırılarak tanımlanabilir. Çeşitli test durumları arasındaki davranış farklılıkları karşılaştırılarak güç tüketimi sorununun temel nedeni kademeli olarak belirlenir.
Optimizasyonlar
Kuro Games, ODPM verileri sayesinde her optimizasyon senaryosunun ne kadar iyileştirildiğini ölçebilir:
- Büyük çekirdeklerin iş yükünü azaltmak için CPU çekirdek planlama stratejisini değiştirme ve farklı iş parçacıklarının önceliğini ayarlama
- CPU'nun çalışma zamanındaki gölgelendirici derleme iş yükünü azaltmak için PSO'yu (boru hattı durum nesnesi) önceden derleme
- GPU oluşturma iş yükünü azaltmak için PVS (Olası Görünür Kümeler) azaltma işlemini uygulama
- GPU oluşturma iş yükünü azaltmak için çevrimdışı gölge örtme kırpma işlemini pişirme
Kuro Games, test sonuçlarını aynı ve tekrarlanabilir koşullar altında karşılaştırmak için aynı 3D sahneyi ve kamera perspektifini kullanarak aynı süre boyunca bir test durumunda ODPM verilerini aldı.
Sonuçlar
Kuro Games, ODPM'den ve güç profillemesinden elde edilen verilerden yararlanarak toplam güç tüketimini %9,68 oranında düşürdü. Eylül sürümündeki (0904 sürümü) 3.233 mW olan toplam güç tüketimi, Kasım sürümünde (1.4 son sürümü) 2.920 mW'a düştü. Aşağıdaki şekilde, sabit FPS ve grafik ayarlarında bu güç azaltma ayrıntılı olarak gösterilmektedir.
ODPM verileri şu anda yalnızca Pixel 6 ve sonraki model cihazlarda kullanılabilir ancak CPU Kullanımı, GPU Kullanımı ve Pil İstatistikleri gibi diğer metrikler aracılığıyla tüm Android cihazlarda iyileştirmeler görülebilir. Örneğin, Kuro Games de Oppo Reno 5 için aynı sahnede GPU kullanımında genel olarak% 9,6 oranında bir düşüş elde etti.
Başlayın
Gelişmiş kullanım alanları için Power Profiler'dan veya Perfetto Power Rails verilerinden başlayabilirsiniz.
ODPM güç çubuğu adları cihaza özeldir. Ray adı "S2S_VDD_G3D" gibi olabilir. İlgili güç monitörü verilerini yorumlamak için cihaz donanımıyla ilgili özel bilgi gerekir. Android API düzeyi 35'ten itibaren getSupportedPowerMonitors
'den PowerMonitor
'i kullanabilirsiniz.
PowerMonitor ile, kullanıcı tarafından okunabilen etiketler ile her OEM tarafından ayarlanan ham güç ray adları arasındaki eşlemeyi alabilirsiniz.
ODPM'si olmayan cihazlarda iyileştirmeyi doğrulamak için güç tüketimi için proxy olarak CPU saatlerini, GPU saatlerini ve bellek bant genişliği tahminlerini kullanabilirsiniz.
Ek kaynaklar
Enerji verimliliğini optimize etme