Melhore o consumo de energia e a duração da bateria minimizando o trabalho na tela de fundo:
Este guia demonstrará como melhorar a maneira como os aplicativos do Windows consomem energia, oferecendo princípios para ajudar você a melhorar o desempenho geral do dispositivo e a vida útil da bateria.
Os princípios mais básicos para melhorar o consumo de energia são garantir que, enquanto o aplicativo estiver na tela de fundo, ele não:
- usará recursos do sistema,
- despertar a CPU por meio de temporizadores,
- ativará a CPU aguardando eventos vsync.
Estar "na tela de fundo" significa que o aplicativo não está visível nem audível para o usuário. Deve haver poucas, se houver, razões para ativar a CPU ou utilizar os recursos do sistema na tela de fundo. Verificar se o aplicativo está acionando esses eventos e abordar a causa pode melhorar significativamente o consumo de energia do aplicativo, a vida útil da bateria e reduzir as emissões de carbono que resultarão dos clientes que usam o aplicativo.
Para verificar se a CPU não está sendo ativada para fazer trabalho desnecessário enquanto o aplicativo não está em uso, é possível capturar e analisar um rastreamento usando o WPA (Windows Performance Analyzer). Seguiremos as etapas explicando como fazer isso abaixo.
Capturar um rastreamento e verificar se há trabalho desnecessário
É importante configurar as condições corretas ao executar o aplicativo antes de capturar um rastreamento para analisar se há trabalho desnecessário sendo executado que pode drenar energia. Também é possível executar vários rastreamentos para testar o aplicativo sob uma variedade de condições.
Instalação
Coloque o dispositivo de teste em estado ocioso abrindo o Gerenciador de Tarefas e garantindo que a utilização da CPU seja inferior a 5%. Isso minimizará a interferência na medição e fornecerá rastreamentos de tamanho razoáveis.
Inicie seu aplicativo e navegue até uma exibição que deve ser comumente usada.
Minimize o aplicativo. *É possível repetir as etapas a seguir enquanto a janela do aplicativo estiver totalmente obstruída (bloqueada da exibição) atrás de outras janelas e quando o aplicativo estiver em primeiro plano, após um período sem interação do usuário, para garantir que o trabalho desnecessário não esteja sendo iniciado pelo aplicativo.
Medir e avaliar o uso da CPU na tela de fundo
Abra uma linha de comando (PowerShell ou Prompt de Comando) no modo de administrador. (Se não for executado no modo de administrador, será possível receber o código de erro: 0xc5585011 "Falha ao habilitar a política para o desempenho do sistema de perfil.")
Insira o comando:
wpr -start power -filemode
Deixe o dispositivo ocioso por 5 minutos.
Insira o comando:
wpr -stop idletrace.etl
Para abrir o rastreamento usando o WPA (Windows Performance Analyzer), digite o comando:
wpa.exe idletrace.etl
Abra o gráfico Computation>CPU Usage (Precise).
Navegue até o seu processo (ou, se você tiver um modelo de vários processos, todos os processos relacionados ao seu aplicativo) e avalie a contagem de Cswitch, "Utilização por CPU". O ideal é que estejam o mais próximo possível de 0 enquanto o aplicativo estiver na tela de fundo. Olhar para as pilhas é uma ótima maneira de encontrar onde os recursos estão sendo usados e como melhorá-los.
Procure ativações excessivas adicionando uma "New Thread Stack" para ver em qual pilha o thread foi ativado.
Abra o gráfico Computation>CPU Usage (Sampled). Rastreie problemas de uso da CPU avaliando onde o tempo no código está sendo gasto na execução.
Medir e avaliar a espera de vsync enquanto estiver na tela de fundo
Observação
Concentre-se no uso básico da CPU na seção anterior antes de investigar esse cenário mais avançado.
Abra uma linha de comando (PowerShell ou Prompt de Comando) no modo de administrador.
Insira o comando:
wpr -start gpu -filemode
Deixe o dispositivo ocioso por 5 minutos.
Insira o comando:
wpr -stop gputrace.etl
Para abrir o rastreamento usando o WPA (Windows Performance Analyzer), digite o comando:
wpa.exe gputrace.etl
Abra o gráfico de Atividade do sistema>Eventos genéricos.
- Filtre por eventos "Microsoft-Windows-Dxgkrnl".
- Arraste a coluna Processo para ser a 2ª coluna.
- Verifique se você está chamando o WaitForVsync. Por exemplo, por meio de APIs como IDXGIOutput::WaitForVBlank (dxgi.h) por meio do evento
WaitForVerticalBlankEventInternal
.
Para saber mais, consulte o artigo Uso do Windows Performance Analyzer para analisar problemas do Modo de Espera Moderno.
Recursos adicionais
Windows developer