Wuthering Waves — это высококачественная ролевая игра в жанре экшен, разработанная Kuro Games. Оптимизация энергопотребления очень важна для стабильного обеспечения превосходного пользовательского опыта во время длительных игровых сессий.
Android Studio представила Power Profiler от Hedgehog (2023.1.1), который может помочь разработчикам понять данные о энергопотреблении на основе On Device Power Rails Monitor (ODPM).
Благодаря возможностям профилирования энергопотребления в Android Studio вы также можете эффективно проводить A/B-тестирование энергопотребления для функций вашего приложения Android (как показано ниже).
Что они сделали
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 и графики.
Данные 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, вы можете использовать тактовую частоту ЦП, тактовую частоту графического процессора и оценки пропускной способности памяти в качестве показателя энергопотребления.
Дополнительные ресурсы
Оптимизация энергоэффективности