Partilhar via


Melhore o consumo de energia e a duração da bateria minimizando o trabalho em segundo plano

Este guia irá demonstrar como melhorar a forma como a sua aplicação Windows consome energia, oferecendo princípios para o ajudar a melhorar o desempenho global do dispositivo e a duração da bateria.

Os princípios mais básicos para melhorar o consumo de energia são garantir que, enquanto a sua aplicação está em segundo plano, ela não:

  • utilizar recursos do sistema,
  • acordar a CPU através de temporizadores,
  • Ative a CPU aguardando os eventos de vsync.

Estar "em segundo plano" significa que a sua aplicação não é visível nem audível para o utilizador. Deverá haver poucas, se é que existem, razões para acordar a CPU ou utilizar recursos do sistema enquanto estiver em segundo plano. Verificar se a sua aplicação está a desencadear estes eventos e abordar a causa pode melhorar significativamente o consumo de energia, a duração da bateria e reduzir as emissões de carbono que resultarão da utilização da sua aplicação pelos clientes.

Para verificar se a CPU não está a acordar para fazer trabalho desnecessário enquanto a sua aplicação não está a ser utilizada, pode capturar e analisar um rastreio usando o Windows Performance Analyzer (WPA). Vamos descrever os passos abaixo para explicar como o fazer.

Captura um rastreio e verifica se há trabalho desnecessário

É importante definir as condições corretas ao executar a sua aplicação antes de capturar um rastreio para analisar se está a ser realizado trabalho desnecessário que possa consumir energia. Também pode querer executar múltiplos rastreios para testar a sua aplicação sob várias condições.

Configuração

  1. Faça com que o seu dispositivo de teste fique inativo abrindo o Gestor de Tarefas e garantindo que a utilização da CPU é inferior a 5%. Fazer isso minimizará a interferência na medição e fornecerá registos de tamanho razoável.

  2. Inicie a sua aplicação e navegue até uma vista que se espera ser frequentemente utilizada.

  3. Minimize a sua aplicação. *Pode querer repetir os passos seguintes enquanto a janela da sua aplicação estiver totalmente ocluída (bloqueada da vista) atrás de outras janelas e quando a sua aplicação estiver em primeiro plano, após um período sem interação do utilizador, para garantir que a aplicação não inicia trabalho desnecessário.

Medir e avaliar o uso da CPU quando estiver em segundo plano

  1. Abra uma linha de comandos (PowerShell ou Prompt de Comandos) em modo administrador. (Se não for executado em modo administrador, pode receber o código de erro: 0xc5585011, "Falhou ao ativar a política para perfilar o desempenho do sistema.")

  2. Entra o comando: wpr -start power -filemode

  3. Deixe o dispositivo repousado durante 5 minutos.

  4. Entra o comando: wpr -stop idletrace.etl

  5. Para abrir o rastreio usando o Windows Performance Analyzer (WPA), introduza o comando: wpa.exe idletrace.etl

  6. Abra o gráfico de Computação>de Utilização da CPU (Preciso ).

    • Navegue até ao seu processo (ou, se tiver um modelo multiprocesso, todos os processos relacionados com a sua aplicação) e avalie a contagem de Cswitch, "Utilização da CPU". Idealmente, estas são o mais próximas possível de 0 enquanto a aplicação está em segundo plano. Observar os stacks é uma ótima forma de descobrir onde os recursos estão a ser utilizados e como melhorá-los.

    • Procure por despertares excessivos ao adicionar um "New Thread Stack" para ver em qual stack o thread despertou.

    Gráfico WPA que mostra o processo da CPU, a contagem e a percentagem de utilização

  7. Abra o gráfico de Computação>Uso da CPU (Amostrada). Identificar problemas de utilização de CPU avaliando onde o tempo de código está a ser gasto a executar.

Medir e avaliar a espera do vsync em segundo plano

Observação

Concentre-se no uso básico do CPU na secção anterior antes de investigar este cenário mais avançado.

  1. Abra uma linha de comandos (PowerShell ou Prompt de Comandos) em modo administrador.

  2. Entra o comando: wpr -start gpu -filemode

  3. Deixe o dispositivo inativo durante 5 minutos.

  4. Entra o comando: wpr -stop gputrace.etl

  5. Para abrir o rastreio usando o Windows Performance Analyzer (WPA), introduza o comando: wpa.exe gputrace.etl

  6. Abra o gráfico de Atividade do Sistema>Eventos genéricos.

    • Filtre eventos por "Microsoft-Windows-Dxgkrnl".
    • Arrasta a coluna Processo para ser a segunda coluna.
    • Verifica se estás a ligar para o WaitForVsync. Por exemplo, através de APIs como IDXGIOutput::WaitForVBlank (dxgi.h) através de um WaitForVerticalBlankEventInternal evento.

    Gráfico WPA mostrando o evento MS Edge webview2

Para saber mais, consulte o artigo Usar o Analisador de Desempenho do Windows para analisar questões do Modern Standby.

Recursos adicionais