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 fondamentali per migliorare il consumo energetico sono garantire che, mentre l'app è in background, non venga eseguito quanto segue:
- utilizzo delle risorse di sistema
- riattivazione della CPU tramite timer,
- riattivazione della 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. Verificare se l'app sta attivando questi eventi e risolvere la causa può migliorare significativamente il consumo di energia dell'app, la durata della batteria e ridurre le emissioni di carbonio derivanti dai clienti che usano l'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 utilizzando Windows Performance Analyzer (WPA). Verranno illustrati i passaggi che illustrano come eseguire questa operazione di seguito.
È 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 consumare energia. È anche possibile eseguire più tracce per testare l'app in diverse condizioni.
Portare il dispositivo di test in modalità inattiva aprendo Gestione attività e assicurandosi 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.
Avviare l'app e passare a una visualizzazione che dovrebbe essere usata comunemente.
Ridurre a icona l'app. *Si potrebbe voler ripetere i passaggi seguenti mentre la finestra dell'app è completamente occlusa (bloccata dalla visualizzazione) dietro altre finestre e quando l'app è in primo piano, dopo un periodo senza interazione da parte dell'utente, per garantire che l'app non avvii operazioni non necessarie.
Aprire una riga di comando (PowerShell o prompt dei comandi) in modalità amministratore. (Se l'esecuzione non avviene in modalità amministratore, è possibile che venga visualizzato il codice di errore: 0xc5585011 "Non è stato possibile abilitare il criterio per profilare le prestazioni del sistema".)
Immettere il comando:
wpr -start power -filemode
Lasciare inattivo il dispositivo per 5 minuti.
Immettere il comando:
wpr -stop idletrace.etl
Per aprire la traccia usando Windows Performance Analyzer (WPA), immettere il comando:
wpa.exe idletrace.etl
Aprire il grafico Calcolo>Utilizzo della CPU (preciso).
Passare al processo (o se si dispone di un modello multiprocesso di tutti i processi correlati all'app) e valutare il conteggio Cswitch, "Utilizzo da parte della CPU". Idealmente il valore deve essere 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 migliorare la situazione.
Cercare se vi sia un numero eccessivo di riattivazioni aggiungendo un "Nuovo stack di thread" per vedere lo stack su cui si è riattivato il thread.
Aprire il grafico Calcolo>Utilizzo della CPU (campionato). Tenere traccia dei problemi di utilizzo della CPU valutando la posizione temporale di esecuzione nel codice.
Nota
Concentrarsi sull'utilizzo della CPU di base nella sezione precedente prima di analizzare questo scenario più avanzato.
Aprire una riga di comando (PowerShell o prompt dei comandi) in modalità amministratore.
Immettere il comando:
wpr -start gpu -filemode
Lasciare inattivo il dispositivo per 5 minuti.
Immettere il comando:
wpr -stop gputrace.etl
Per aprire la traccia usando Windows Performance Analyzer (WPA), immettere il comando:
wpa.exe gputrace.etl
Aprire il grafico Attività sistema>Eventi generici.
- Filtrare gli eventi "Microsoft-Windows-Dxgkrnl".
- Trascinare la colonna Processo in modo che sia la seconda colonna.
- Controllare se si sta chiamando WaitForVsync. Ad esempio, tramite API come IDXGIOutput::WaitForVBlank (dxgi.h) tramite l'evento
WaitForVerticalBlankEventInternal
.
Per altre informazioni, vedere l'articolo Uso di Windows Performance Analyzer per analizzare i problemi di Modern Standby.
Feedback su Windows developer
Windows developer è un progetto di open source. Selezionare un collegamento per fornire feedback: