Sdílet prostřednictvím


Zlepšení spotřeby energie a výdrže baterie minimalizací práce na pozadí

Tato příručka vám ukáže, jak zlepšit způsob, jakým vaše aplikace pro Windows spotřebovává napájení, a nabízí principy, které vám pomůžou zlepšit celkový výkon zařízení a životnost baterie.

Nejzásadnějšími principy pro zlepšení spotřeby energie je zajistit, aby aplikace byla na pozadí, ale ne:

  • používat systémové prostředky,
  • probuzení procesoru pomocí časovačů,
  • Probuďte procesor čekáním na události vsync.

Být "na pozadí" znamená, že aplikace není uživateli viditelná ani zvuková. Mělo by existovat jen málo důvodů, pokud vůbec nějaké, proč probouzet procesor nebo využívat systémové prostředky na pozadí. Kontrola, jestli aplikace tyto události spouští a řeší příčinu, může výrazně zlepšit spotřebu energie, životnost baterie a snížit emise uhlíku, které budou výsledkem používání vaší aplikace zákazníkům.

Pokud chcete zkontrolovat, jestli se procesor neprobouzí k nepotřebné práci, když se vaše aplikace nepoužívá, můžete zachytit a analyzovat trasování pomocí Windows Performance Analyzer (WPA). Projdeme si kroky vysvětlující, jak to udělat níže.

Zachytit záznam a zkontrolovat nepotřebnou práci

Před zachycením trasování je důležité nastavit správné podmínky při spuštění aplikace, abyste mohli analyzovat, jestli se provádí zbytečná práce, která může zbytečně spotřebovávat energii. Můžete také chtít spustit více sledování, abyste mohli aplikaci otestovat v různých podmínkách.

Nastavení

  1. Dostaňte testovací zařízení do nečinného stavu otevřením Správce úloh a ujistěte se, že využití procesoru je menší než 5%. Tím minimalizujete rušení měření a poskytnete rozumné velikostní stopy.

  2. Spusťte aplikaci a přejděte do zobrazení, které se má běžně používat.

  3. Minimalizujte aplikaci. Pokud je okno vaší aplikace zcela zakryté za jinými okny a když je vaše aplikace v popředí, po určité době nečinnosti uživatele zopakujte následující kroky, abyste zajistili, že aplikace nezahájí zbytečnou činnost.

Měření a vyhodnocení využití procesoru na pozadí

  1. Otevřete příkazový řádek (PowerShell nebo příkazový řádek)v režimu správce. (Pokud neběží v režimu správce, může se zobrazit kód chyby: 0xc5585011, nepovedlo se povolit zásadu profilování výkonu systému.)

  2. Zadejte příkaz: wpr -start power -filemode

  3. Nechte zařízení nečinné po dobu 5 minut.

  4. Zadejte příkaz: wpr -stop idletrace.etl

  5. Pokud chcete trasování otevřít pomocí Windows Performance Analyzer (WPA) , zadejte příkaz: wpa.exe idletrace.etl

  6. Otevřete graf výpočetníchvyužití procesoru (přesné).

    • Přejděte na svůj proces (nebo, pokud máte model s více procesy, všechny procesy související s vaší aplikací) a vyhodnoťte Cswitch count, "Využití procesorem". V ideálním případě se jedná o co nejblíže 0, když je aplikace na pozadí. Pohled na zásobníky je skvělý způsob, jak najít, kde se prostředky používají a jak je vylepšit.

    • Vyhledejte nadměrná probuzení přidáním zásobníku "Nové vlákno", abyste zjistili, na kterém zásobníku se vlákno probudilo.

    Graf WPA zobrazující proces procesoru, počet a procento využití

  7. Otevřete graf výpočetní>využití procesoru (vzorkované). Sledujte problémy s využitím procesoru vyhodnocením toho, kde probíhá provádění času v kódu.

Měření a vyhodnocení čekání na synchronizaci svislého vyrovnání (vsync) v pozadí

Poznámka:

Než prozkoumáte tento pokročilejší scénář, zaměřte se na základní využití procesoru v předchozí části.

  1. Otevřete příkazový řádek (PowerShell nebo příkazový řádek) v režimu správce.

  2. Zadejte příkaz: wpr -start gpu -filemode

  3. Nechte zařízení nečinné po dobu 5 minut.

  4. Zadejte příkaz: wpr -stop gputrace.etl

  5. Pokud chcete trasování otevřít pomocí Windows Performance Analyzer (WPA) , zadejte příkaz: wpa.exe gputrace.etl

  6. Otevřete graf obecné události v rámci aktivity systému .

    • Vyfiltrujte události Microsoft-Windows-Dxgkrnl.
    • Přetáhněte sloupec Proces, aby se stal druhým sloupcem.
    • Zkontrolujte, jestli voláte do waitForVsync. Například prostřednictvím rozhraní API, jako je IDXGIOutput::WaitForVBlank (dxgi.h) prostřednictvím události WaitForVerticalBlankEventInternal.

    Graf WPA zobrazující událost MS Edge Webview2

Další informace najdete v článku Použití analyzátoru výkonu systému Windows k analýze problémů s moderním pohotovostním režimem.

Dodatečné zdroje