Condividi tramite


Migliorare il consumo di energia e la durata della batteria riducendo al minimo il lavoro in background

Questa guida illustra come migliorare il modo in cui l'applicazione Windows consuma energia, offrendo principi che consentono di migliorare le prestazioni complessive del dispositivo e la durata della batteria.

I principi più fondamentali per migliorare il consumo energetico sono garantire che, mentre l'app è in background, non:

  • usare le risorse di sistema,
  • riattivare la CPU tramite timer,
  • riattivare la CPU attendendo gli eventi vsync.

Essere "in background" significa che l'app non è visibile, né udibile, per l'utente. Ci dovrebbero essere pochi motivi, se presenti, per riattivare la CPU o usare le risorse di sistema in background. Verifica se l'app sta attivando questi eventi e risolvendo la causa può migliorare significativamente il consumo di energia della tua app, la durata della batteria e ridurre le emissioni di carbonio risultanti dai clienti che usano la tua app.

Per verificare che la CPU non venga riattivata per eseguire operazioni non necessarie mentre l'app non è in uso, è possibile acquisire e analizzare una traccia usando Windows Performance Analyzer (WPA). Verranno illustrati i passaggi che illustrano come eseguire questa operazione di seguito.

Acquisire una traccia e verificare la presenza di operazioni non necessarie

È importante configurare le condizioni corrette durante l'esecuzione dell'app prima di acquisire una traccia per analizzare se vengono eseguite operazioni non necessarie che possono svuotare l'alimentazione. È anche possibile eseguire più tracce per testare l'app in diverse condizioni.

Setup

  1. Porta il dispositivo di test in modalità inattiva aprendo Gestione attività e assicurandoti che l'utilizzo della CPU sia inferiore al 5%. In questo modo si riduce al minimo l'interferenza delle misurazioni e si forniscono tracce di dimensioni ragionevoli.

  2. Avviare l'app e passare a una visualizzazione che dovrebbe essere usata comunemente.

  3. Ridurre al minimo la tua app. *Potresti voler ripetere i passaggi seguenti mentre la finestra dell'app è completamente bloccata (bloccata dalla visualizzazione) dietro altre finestre e quando l'app è in primo piano, dopo un periodo di nessuna interazione da parte dell'utente, per garantire che il lavoro non necessario non venga avviato dall'app.

Misurare e valutare l'uso della CPU in background

  1. Apri una riga di comando (PowerShell o Prompt dei Comandi) in modalità amministratore. Se non viene eseguito in modalità amministratore, è possibile che venga visualizzato il codice di errore: 0xc5585011 "Non è stato possibile abilitare il criterio per profilare le prestazioni del sistema".

  2. Immettere il comando : wpr -start power -filemode

  3. Lasciare inattiva il dispositivo per 5 minuti.

  4. Immettere il comando : wpr -stop idletrace.etl

  5. Per aprire la traccia usando Windows Performance Analyzer (WPA), immettere il comando : wpa.exe idletrace.etl

  6. Aprire il grafico della Computazione Utilizzo CPU (Preciso).

    • Passare al proprio processo (o, se si dispone di un modello multiprocesso, a tutti i processi correlati all'app) e valutare il conteggio Cswitch, "Utilizzo per CPU". Idealmente questi sono il più vicino possibile a 0 mentre l'app è in background. Esaminare gli stack è un ottimo modo per trovare dove vengono usate le risorse e come migliorarlo.

    • Cercare un numero eccessivo di riattivazioni aggiungendo un "Nuovo stack di thread" per vedere lo stack su cui si è riattivato il thread.

    Grafico WPA che mostra il processo cpu, il conteggio e la percentuale di utilizzo

  7. Aprire il grafico Utilizzo CPU calcolo>(sampled). Individuare i problemi di utilizzo della CPU valutando i luoghi nel codice in cui viene speso il tempo di esecuzione.

Misurare e valutare l'attesa vsync mentre si è in background

Annotazioni

Concentrarsi sull'utilizzo della CPU di base nella sezione precedente prima di analizzare questo scenario più avanzato.

  1. Aprire una riga di comando (PowerShell o prompt dei comandi) in modalità amministratore.

  2. Immettere il comando : wpr -start gpu -filemode

  3. Lasciare inattiva il dispositivo per 5 minuti.

  4. Immettere il comando : wpr -stop gputrace.etl

  5. Per aprire la traccia usando Windows Performance Analyzer (WPA), immettere il comando : wpa.exe gputrace.etl

  6. Aprire il grafico attività di sistema>eventi generici.

    • Filtra gli eventi "Microsoft-Windows-Dxgkrnl".
    • Trascinare la colonna Processo in modo che sia la seconda colonna.
    • Controllare se si sta chiamando in WaitForVsync. Ad esempio, tramite API come IDXGIOutput::WaitForVBlank (dxgi.h) tramite l'evento WaitForVerticalBlankEventInternal .

    Grafico WPA che mostra l'evento webview2 di MS Edge

Per altre informazioni, vedere l'articolo Uso di Windows Performance Analyzer per analizzare i problemi di standby moderno.

Risorse aggiuntive