Kuro Games reduce el consumo de energía en un 9.68% con el generador de perfiles de energía de Android Studio y ODPM para Wuthering Waves

Wuthering Waves es un juego de rol de acción de alta fidelidad desarrollado por Kuro Games. Optimizar el consumo de energía es muy importante para ofrecer de forma sostenible una experiencia del usuario premium en sesiones de juego largas.

Figura 1: Captura de pantalla de Wuthering Waves

Android Studio presentó el generador de perfiles de energía de Hedgehog (2023.1.1) que puede ayudar a los desarrolladores a comprender los datos de consumo de energía en función del monitor de rieles de energía integrado en el dispositivo (ODPM).

Con las capacidades de perfil de energía en Android Studio, también puedes realizar pruebas A/B de manera eficaz del consumo de energía de las funciones de tu app para Android (como se muestra a continuación).

Figura 2: Captura de pantalla del generador de perfiles de energía de Android Studio

Qué hizo la empresa

Kuro Games comenzó a usar el generador de perfiles de energía de Android Studio para comprender cómo los comportamientos de los juegos afectan el consumo de energía del dispositivo. Esta experiencia los llevó a desarrollar una herramienta personalizada basada en Perfetto y ODPM, que incorpora las siguientes mejoras:

  • Vistas personalizadas: El desarrollador puede filtrar rieles de energía y establecer intervalos de tiempo flexibles predeterminados.
  • Mejor mantenimiento: El desarrollador puede subir los datos de consumo de energía a su sistema de control de calidad personalizado y comparar los datos entre las versiones del juego.

Procesa datos de ODPM

Para acceder a los datos de ODPM, Kuro Games usó la API de métricas de Perfetto Trace Processor (Python) para procesar avg_used_power_mw data de una sesión de 30 segundos de la métrica android_powerrails, que se define como AndroidPowerRails en el proto de métricas de Pertetto, en el siguiente formato:

Riel de alimentación Calidad de los gráficos FPS Brillo Consumo de energía promedio Porcentaje(por riel / total)
power.rail.cpu.big Alto 30 Bajo 474.158 mW 14.70%
power.rail.cpu.mid Alto 30 Bajo 470.916 mW 14.60%
power.rail.cpu.little Alto 30 Bajo 438.662 mW 13.60%
power.rail.gpu Alto 30 Bajo 346.761 mW 10.70%

Identifica los rieles de energía que consumen mucha energía

No hay un valor estándar para cada riel de energía. Para identificar los rieles de energía que consumen mucha energía, Kuro Games creó pruebas A/B con diferentes casos de prueba, como inactivo, en ejecución y en combate. Se pueden identificar rieles de energía específicos con valores claramente altos comparando los valores de los mismos rieles de energía. Si comparas las diferencias de comportamiento en varios casos de prueba, se descubrirá gradualmente la causa raíz del problema de consumo de energía.

Optimizaciones

Con los datos del ODPM, Kuro Games puede medir la mejora de cada situación de optimización:

  • Cambiar la estrategia de programación de núcleos de CPU y ajustar la prioridad de los diferentes subprocesos para reducir la carga de trabajo de los núcleos grandes
  • Precompilación del PSO (objeto de estado de la canalización) para reducir la carga de trabajo de compilación del sombreador del tiempo de ejecución de la CPU
  • Implementación de la eliminación de PVS (conjuntos potencialmente visibles) para reducir la carga de trabajo de renderización de la GPU
  • Se agregó el procesamiento en segundo plano de la eliminación de oclusión de sombras para reducir la carga de trabajo de renderización de la GPU.

Para comparar los resultados de las pruebas en condiciones idénticas y reproducibles, Kuro Games recuperó los datos de ODPM en un caso de prueba con la misma escena 3D y la misma perspectiva de la cámara con la misma duración.

Resultados

Aprovechando los datos del ODPM y el perfil de energía, Kuro Games redujo el consumo de energía total en un 9.68%, de 3233 mW en la versión de septiembre (versión 0904) a 2920 mW en la versión de noviembre (versión 1.4 final). En la siguiente imagen, se detalla esta reducción de energía con una configuración de FPS y gráficos coherente.

Figura 3: Diferencias en los datos de rieles de energía entre la versión de septiembre y la de noviembre

Actualmente, los datos de ODPM solo están disponibles para Pixel 6 y dispositivos posteriores, pero se pueden ver mejoras en todos los dispositivos Android a través de otras métricas, como el uso de la CPU, el uso de la GPU y Batterystats. Por ejemplo, Kuro Games también observó una reducción general del 9.6% en el uso de la GPU en la misma escena para Oppo Reno 5.

Comenzar

Puedes comenzar con los datos del Generador de perfiles de energía o de los rieles de energía de Perfetto para casos de uso avanzados.

Los nombres de los rieles de energía del ODPM son específicos de cada dispositivo. Un nombre de riel puede ser algo como "S2S_VDD_G3D". Se requiere conocimiento específico del hardware del dispositivo para interpretar los datos correspondientes del monitor de energía. A partir del nivel de API 35 de Android, puedes usar PowerMonitor desde getSupportedPowerMonitors. Con PowerMonitor, puedes recuperar la asignación entre las etiquetas legibles por humanos y los nombres de rieles de energía sin procesar que establece cada OEM individual.

Para verificar la mejora en dispositivos sin ODPM, puedes usar los relojes de la CPU, los relojes de la GPU y las estimaciones de ancho de banda de la memoria como proxy del consumo de energía.

Recursos adicionales

Optimiza la eficiencia energética