Kuro Games снижает энергопотребление на 9,68% с помощью Android Studio Power Profiler и ODPM для Wuthering Waves

Wuthering Waves — это высококачественная ролевая игра в жанре экшен, разработанная Kuro Games. Оптимизация энергопотребления очень важна для стабильного обеспечения превосходного пользовательского опыта во время длительных игровых сессий.

Рисунок 1. Скриншот «Грозовые волны»

Android Studio представила Power Profiler от Hedgehog (2023.1.1), который может помочь разработчикам понять данные о энергопотреблении на основе On Device Power Rails Monitor (ODPM).

Благодаря возможностям профилирования энергопотребления в Android Studio вы также можете эффективно проводить A/B-тестирование энергопотребления для функций вашего приложения Android (как показано ниже).

Рис. 2. Снимок экрана профилировщика мощности Android Studio

Что они сделали

Kuro Games начала с использования Android Studio Power Profiler, чтобы понять, как поведение игры влияет на энергопотребление устройства. Этот опыт побудил их разработать индивидуальный инструмент на основе Perfetto и ODPM, включающий следующие улучшения:

  • Настраиваемые виды — разработчик может фильтровать шины питания и настраивать гибкие временные диапазоны.
  • Лучшее обслуживание — разработчик может загружать данные о энергопотреблении в свою настроенную систему контроля качества и сравнивать данные разных версий игры.

Обработка данных ODPM

Для доступа к данным ODPM Kuro Games использовала API метрики Perfetto Trace Processor (Python) для обработки avg_used_power_mw data 30-секундного сеанса из метрики android_powerrails , которая определена как AndroidPowerRails в Pertetto metrics proto , в следующий формат:

Силовая шина Качество графики ФПС Яркость Среднее энергопотребление Процент (на рельс / всего)
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%
... ... ... ... ... ...

Определите силовые шины с высоким энергопотреблением

Стандартного значения для каждой шины питания не существует. Чтобы выявить шины питания с высоким энергопотреблением, Kuro Games разработала A/B-тесты, используя различные тестовые сценарии, включая холостой ход, работу и боевые действия. Конкретные шины питания с явно высокими значениями можно определить путем сравнения значений одних и тех же шин питания. Сравнивая различия в поведении в различных тестовых случаях, можно постепенно выявить основную причину проблемы энергопотребления.

Оптимизации

Используя данные ODPM, Kuro Games может измерить улучшение каждого сценария оптимизации:

  • Изменение стратегии планирования ядер ЦП и настройка приоритета различных потоков для снижения нагрузки на большие ядра.
  • Предварительная компиляция PSO (объекта состояния конвейера) для уменьшения рабочей нагрузки ЦП, связанной с компиляцией шейдера во время выполнения.
  • Реализация отсеивания PVS (потенциально видимых наборов) для снижения рабочей нагрузки рендеринга на графическом процессоре.
  • Запекание автономного отсеивания теневых объектов для снижения нагрузки на графический процессор

Чтобы сравнить результаты испытаний в идентичных и воспроизводимых условиях, Kuro Games извлекла данные ODPM в тестовом примере, используя ту же 3D-сцену и перспективу камеры с той же продолжительностью.

Результаты

Используя данные ODPM и профилирования энергопотребления, Kuro Games снизила общее энергопотребление на 9,68%: с 3233 мВт в сентябрьском выпуске (версия 0904) до 2920 мВт в ноябрьском выпуске (финальная версия 1.4). На следующем рисунке подробно показано это снижение энергопотребления при одинаковых настройках FPS и графики.

Рисунок 3. Различия в данных по шине питания между сентябрьской и ноябрьской версиями

Данные ODPM в настоящее время доступны только для устройств Pixel 6 и новее, но улучшения можно увидеть на всех устройствах Android с помощью других показателей, включая загрузку ЦП, загрузку графического процессора и статистику батареи. Например, Kuro Games также отметила общее снижение использования графического процессора на 9,6% в той же сцене для Oppo Reno 5.

Начать

Вы можете начать с данных Power Profiler или Perfetto Power Rails для расширенных вариантов использования.

Имена шин питания ODPM зависят от устройства. Имя рельса может быть чем-то вроде «S2S_VDD_G3D»; Для интерпретации соответствующих данных монитора мощности необходимы специальные знания аппаратного обеспечения устройства. Начиная с уровня Android API 35, вы можете использовать PowerMonitor из getSupportedPowerMonitors . С помощью PowerMonitor вы можете получить сопоставление между удобочитаемыми этикетками и необработанными именами шин питания, установленными каждым отдельным OEM-производителем.

Чтобы проверить улучшение на устройствах без ODPM, вы можете использовать тактовую частоту ЦП, тактовую частоту графического процессора и оценки пропускной способности памяти в качестве показателя энергопотребления.

Дополнительные ресурсы

Оптимизация энергоэффективности