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.
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).
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.
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