Kuro Games از طریق نمایشگر قدرت Android Studio و ODPM for Wuthering Waves مصرف انرژی را 9.68 درصد کاهش می دهد.

Wuthering Waves یک بازی اکشن RPG است که توسط شرکت Kuro Games ساخته شده است. بهینه سازی مصرف انرژی برای ارائه پایدار تجربه کاربری ممتاز برای جلسات طولانی بازی بسیار مهم است.

شکل 1. اسکرین شات امواج بادگیر

اندروید استودیو Power Profiler را از Hedgehog (2023.1.1) معرفی کرد که می‌تواند به توسعه‌دهندگان کمک کند تا داده‌های مصرف انرژی را بر اساس On Device Power Rails Monitor (ODPM) درک کنند.

با قابلیت‌های پروفایل قدرت در Android Studio، می‌توانید به طور موثر A/B مصرف انرژی را برای ویژگی‌های برنامه اندروید خود آزمایش کنید (مانند شکل زیر).

شکل 2. اسکرین شات اندروید استودیو Power Profiler

کاری که آنها انجام دادند

Kuro Games با استفاده از Android Studio Power Profiler برای درک اینکه چگونه رفتارهای بازی بر مصرف انرژی دستگاه تأثیر می گذارد، شروع کرد. این تجربه آنها را به ایجاد یک ابزار سفارشی بر اساس Perfetto و ODPM هدایت کرد که شامل پیشرفت‌های زیر است:

  • نماهای سفارشی - توسعه دهنده می تواند ریل های برق را فیلتر کرده و محدوده زمانی انعطاف پذیر را از پیش تعیین کند.
  • نگهداری بهتر - توسعه دهنده می تواند داده های مصرف انرژی را در سیستم QA سفارشی خود آپلود کند و داده ها را در نسخه های بازی مقایسه کند.

پردازش داده های ODPM

برای دسترسی به داده‌های ODPM، Kuro Games از Perfetto Trace Processor (Python) Metric API برای پردازش avg_used_power_mw data 30 ثانیه‌ای از متریک android_powerrails ، که به‌عنوان AndroidPowerRails در پروتو متریک Pertetto تعریف می‌شود، در قالب زیر استفاده کرد:

ریل برق کیفیت گرافیک FPS روشنایی میانگین مصرف برق درصد (در هر ریل / کل)
power.rail.cpu.big بالا 30 کم 474.158 میلی وات 14.70٪
power.rail.cpu.mid بالا 30 کم 470.916 مگاوات 14.60٪
power.rail.cpu.little بالا 30 کم 438.662 مگاوات 13.60٪
power.rail.gpu بالا 30 کم 346.761 میلی وات 10.70٪
... ... ... ... ... ...

ریل های برق پرمصرف را شناسایی کنید

هیچ مقدار استانداردی برای هر ریل برق وجود ندارد. کورو گیمز برای شناسایی ریل‌های برق پرمصرف، تست‌های A/B را با استفاده از تست‌های مختلف از جمله بیکاری، دویدن و مبارزه ایجاد کرد. ریل های برق خاص با مقادیر آشکارا بالا را می توان با مقایسه مقادیر همان ریل های قدرت شناسایی کرد. با مقایسه تفاوت های رفتاری در موارد مختلف آزمایش، علت اصلی مشکل مصرف برق به تدریج مشخص خواهد شد.

بهینه سازی ها

با داده های ODPM، Kuro Games می تواند بهبود هر سناریو بهینه سازی را اندازه گیری کند:

  • تغییر استراتژی زمان‌بندی هسته CPU و تنظیم اولویت رشته‌های مختلف برای کاهش بار کاری هسته‌های بزرگ
  • پیش کامپایل PSO (Pipeline State Object) برای کاهش حجم کاری کامپایل سایه زن در زمان اجرا CPU
  • پیاده‌سازی PVS (مجموعه‌های بالقوه قابل مشاهده) برای کاهش بار کاری رندر GPU
  • پخت انسداد سایه آفلاین برای کاهش بار کاری رندر GPU

برای مقایسه نتایج آزمایش در شرایط یکسان و قابل تکرار، Kuro Games داده‌های ODPM را در یک مورد آزمایشی با استفاده از همان صحنه سه بعدی و پرسپکتیو دوربین با مدت زمان مشابه بازیابی کرد.

نتایج

کورو گیمز با استفاده از داده‌های ODPM و پروفایل قدرت، مصرف کل انرژی را تا 9.68 درصد از 3233 میلی‌وات در نسخه سپتامبر (نسخه 0904) به 2920 میلی‌وات در نسخه نوامبر (نسخه 1.4 نهایی) کاهش داد. شکل زیر این کاهش قدرت را تحت تنظیمات ثابت FPS و گرافیک نشان می دهد.

شکل 3. تفاوت داده های ریل برق بین نسخه سپتامبر و نسخه نوامبر

داده‌های ODPM در حال حاضر فقط برای دستگاه‌های Pixel 6 و بالاتر در دسترس است، اما پیشرفت‌ها را می‌توان در همه دستگاه‌های Android از طریق معیارهای دیگر از جمله استفاده از CPU، استفاده از GPU و Batterystats مشاهده کرد. به عنوان مثال، Kuro Games همچنین شاهد کاهش 9.6 درصدی در استفاده از GPU در همان صحنه برای Oppo Reno 5 بود.

شروع کنید

می‌توانید از Power Profiler یا داده‌های Perfetto Power Rails برای موارد استفاده پیشرفته شروع کنید.

نام‌های ODPM Power Rail مختص دستگاه‌ها هستند. نام ریل ممکن است چیزی شبیه "S2S_VDD_G3D" باشد. دانش خاصی از سخت افزار دستگاه برای تفسیر داده های مانیتور برق مربوطه مورد نیاز است. از Android API سطح 35، می‌توانید از PowerMonitor از getSupportedPowerMonitors استفاده کنید. با پاورمانیتور، می توانید نقشه بین برچسب های قابل خواندن توسط انسان و نام ریل های برق خام که توسط هر OEM منفرد تنظیم شده است را بازیابی کنید.

برای تأیید بهبود در دستگاه‌های بدون ODPM، می‌توانید از ساعت‌های CPU، ساعت‌های GPU و تخمین پهنای باند حافظه به عنوان پراکسی برای مصرف انرژی استفاده کنید.

منابع اضافی

بهینه سازی بهره وری انرژی