Wuthering Waves é um RPG de ação de alta fidelidade desenvolvido pela Kuro Games. Otimizar o consumo de energia é muito importante para oferecer uma experiência premium sustentável para sessões de jogo longas.
O Android Studio introduziu o Power Profiler do Hedgehog (2023.1.1), que pode ajudar os desenvolvedores a entender os dados de consumo de energia com base no On Device Power Rails Monitor (ODPM).
Com os recursos de perfil de consumo de energia no Android Studio, você também pode fazer testes A/B de consumo de energia para os recursos do app Android (como mostrado abaixo).
O que a equipe fez
A Kuro Games começou a usar o Power Profiler do Android Studio para entender como os comportamentos do jogo afetam o consumo de energia do dispositivo. Essa experiência levou a equipe a desenvolver uma ferramenta personalizada com base no Perfetto e no ODPM, incorporando as seguintes melhorias:
- Visualizações personalizadas: o desenvolvedor pode filtrar trechos de energia e predefinir períodos flexíveis.
- Melhor manutenção: o desenvolvedor pode fazer upload dos dados de consumo de energia para o sistema de controle de qualidade personalizado e comparar os dados entre as versões do jogo.
Processar dados do ODPM
Para acessar os dados do ODPM, a Kuro Games usou a
API Metric do processador de rastreamento do Perfeto (Python)
para processar avg_used_power_mw data
de uma sessão de 30 segundos da
métrica android_powerrails
, que é definida como AndroidPowerRails
no
proto de métricas do Perfeto,
neste formato:
Power Rail | Qualidade gráfica | QPS | Brilho | Consumo médio de energia | Porcentagem(por trilho / total) |
---|---|---|---|---|---|
power.rail.cpu.big | Alta | 30 | Baixa | 474,158 mW | 14,70% |
power.rail.cpu.mid | Alta | 30 | Baixa | 470,916 mW | 14,60% |
power.rail.cpu.little | Alta | 30 | Baixa | 438,662 mW | 13,60% |
power.rail.gpu | Alta | 30 | Baixa | 346,761 mW | 10,70% |
… | … | … | … | … | … |
Identificar trilhos de energia com consumo de energia alto
Não há um valor padrão para cada trilho de energia. Para identificar trilhos de energia com alto consumo de energia, a Kuro Games criou testes A/B usando diferentes casos de teste, incluindo inatividade, execução e combate. Trilhos de energia específicos com valores obviamente altos podem ser identificados comparando valores dos mesmos trilhos de energia. Ao comparar as diferenças comportamentais em vários casos de teste, a causa raiz do problema de consumo de energia será descoberta gradualmente.
Otimizações
Com os dados do ODPM, a Kuro Games pode medir a melhoria de cada cenário de otimização:
- Como mudar a estratégia de programação de núcleos da CPU e ajustar a prioridade de linhas de execução diferentes para reduzir a carga de trabalho de núcleos grandes
- Pré-compilação do PSO (objeto de estado do pipeline) para reduzir a carga de trabalho de compilação do sombreador de execução da CPU
- Implementação de eliminação de PVS (conjuntos potencialmente visíveis) para reduzir a carga de trabalho de renderização da GPU
- Criação de culling de oclusão de sombra off-line para reduzir a carga de trabalho de renderização da GPU
Para comparar os resultados do teste em condições idênticas e reproduzíveis, a Kuro Games extraiu os dados de ODPM em um caso de teste usando a mesma cena 3D e a mesma perspectiva de câmera com a mesma duração.
Resultados
Aproveitando os dados do ODPM e do perfil de energia, a Kuro Games reduziu o consumo total de energia em 9,68%, de 3.233 mW na versão de setembro (0904) para 2.920 mW na versão de novembro (1.4 final). A figura a seguir detalha essa redução de energia com configurações consistentes de FPS e gráficos.
No momento, os dados do ODPM estão disponíveis apenas para o Pixel 6 e dispositivos mais recentes, mas as melhorias podem ser vistas em todos os dispositivos Android por meio de outras métricas, incluindo Uso da CPU, Uso da GPU e Batterystats. Por exemplo, a Kuro Games também teve uma redução geral de 9,6% no uso da GPU na mesma cena para o Oppo Reno 5.
Primeiros passos
Você pode começar com os dados do Power Profiler ou Perfetto Power Rails para casos de uso avançados.
Os nomes dos trilhos de energia do ODPM são específicos do dispositivo. Um nome de trilho pode ser algo como
"S2S_VDD_G3D". É necessário ter conhecimento específico do hardware do dispositivo para
interpretar os dados correspondentes do monitor de energia. No nível 35 da API do Android, é
possível usar PowerMonitor
de
getSupportedPowerMonitors
.
Com o PowerMonitor, é possível recuperar o mapeamento entre rótulos legíveis por humanos
e os nomes de trilhos de energia brutos definidos por cada OEM individual.
Para verificar a melhoria em dispositivos sem o ODPM, use os clocks da CPU, da GPU e as estimativas de largura de banda de memória como um proxy para o consumo de energia.
Outros recursos
Otimizar a eficiência energética