Verbessern Sie den Stromverbrauch und die Akkulaufzeit durch Minimierung der Hintergrundarbeiten
In diesem Handbuch erfahren Sie, wie Sie den Stromverbrauch Ihrer Windows-Anwendung verbessern können und wie Sie die Gesamtleistung Ihres Geräts und die Akkulaufzeit verbessern können.
Die grundlegendsten Prinzipien zur Verbesserung des Stromverbrauchs bestehen darin, sicherzustellen, dass während Ihre App im Hintergrund läuft, sie Folgendes nicht macht:
- Systemressourcen nutzen,
- die CPU über Timer aufwecken,
- die CPU aufwecken, indem Sie auf vsync-Ereignisse wartet.
Wenn Sie „im Hintergrund“ sind, bedeutet dies, dass Ihre App für den Benutzer weder sichtbar noch hörbar ist. Es sollten nur wenige Gründe vorhanden sein, die CPU zu wecken oder Systemressourcen im Hintergrund zu nutzen. Prüfen Sie, ob Ihre App diese Ereignisse auslöst, und beheben Sie die Ursache. So können Sie den Stromverbrauch Ihrer App und die Akkulaufzeit erheblich verbessern und die Kohlenstoffemissionen reduzieren, die durch die Nutzung Ihrer App durch Ihre Kunden entstehen.
Um zu überprüfen, dass die CPU nicht aufwacht, um unnötige Arbeit zu verrichten, während Ihre App nicht in Gebrauch ist, können Sie mit dem Windows Performance Analyzer (WPA) eine Ablaufverfolgung erfassen und analysieren. Im Folgenden werden wir Ihnen die einzelnen Schritte erklären.
Erfassen einer Ablaufverfolgung und Überprüfung auf unnötige Arbeit
Es ist wichtig, die richtigen Bedingungen für die Ausführung Ihrer App festzulegen, bevor Sie eine Ablaufverfolgung aufzeichnen, um zu analysieren, ob unnötige Arbeiten durchgeführt werden, die Strom verbrauchen können. Sie können auch mehrere Ablaufverfolgungen ausführen, um Ihre App unter einer Vielzahl von Bedingungen zu testen.
Setup
Bringen Sie Ihr Testgerät in den Leerlauf, indem Sie den Task-Manager öffnen und sicherstellen, dass die CPU-Auslastung weniger als 5% beträgt. Auf diese Weise werden Störungen bei der Messung minimiert und Ablaufverfolgungen in angemessener Größe erzeugt.
Starten Sie Ihre App, und navigieren Sie zu einer Ansicht, die voraussichtlich häufig verwendet wird.
Minimieren Sie Ihre App. *Wenn Sie die folgenden Schritte wiederholen möchten, während Ihr App-Fenster vollständig von anderen Fenstern verdeckt wird (und nicht sichtbar ist), und wenn sich Ihre App im Vordergrund befindet, nachdem der Benutzer eine Zeit lang nicht interagiert hat, können Sie sicherstellen, dass die App keine unnötigen Arbeiten auslöst.
Messen und Auswerten von CPU-Nutzung im Hintergrund
Öffnen Sie eine Befehlszeile (PowerShell oder Eingabeaufforderung) im Administratormodus. (Wenn Sie dies nicht im Administratormodus ausführen, erhalten Sie möglicherweise den Fehlercode: 0xc5585011, „Die Richtlinie zur Erstellung eines Leistungsprofils für das System konnte nicht aktiviert werden“)
Geben Sie den Befehl
wpr -start power -filemode
ein.Lassen Sie das Gerät 5 Minuten im Leerlauf.
Geben Sie den Befehl
wpr -stop idletrace.etl
ein.Um die Ablaufverfolgung mit Windows Performance Analyzer (WPA) zu öffnen, geben Sie den Befehl ein:
wpa.exe idletrace.etl
Öffnen Sie das Diagramm Computation>CPU Usage (Precise).
Navigieren Sie zu Ihrem Prozess (oder bei einem Multiprozessmodell zu allen Prozessen, die mit Ihrer App zusammenhängen) und werten Sie die Zählung von Cswitch aus, „Utilization by CPU“. Im Idealfall liegen diese so nah wie möglich bei 0, während sich die App im Hintergrund befindet. Die Betrachtung der Stapel ist eine hervorragende Möglichkeit, um herauszufinden, wo Ressourcen verwendet werden und wie sie verbessert werden können.
Suchen Sie nach übermäßigen Wakes, indem Sie einen „Neuen Thread-Stapel“ hinzufügen, um zu sehen, auf welchem Stapel der Thread geweckt wurde.
Öffnen Sie das Diagramm Computation>CPU Usage (Sampled). Ermitteln Sie Probleme mit der CPU-Auslastung, indem Sie auswerten, wo die Zeit für die Ausführung von In-Code verwendet wird.
Messen und Auswerten von vsync-Wartezeiten im Hintergrund
Hinweis
Konzentrieren Sie sich auf die grundlegende CPU-Auslastung im vorherigen Abschnitt, bevor Sie dieses erweiterte Szenario untersuchen.
Öffnen Sie eine Befehlszeile (PowerShell oder Eingabeaufforderung) im Administratormodus.
Geben Sie den Befehl
wpr -start gpu -filemode
ein.Lassen Sie das Gerät 5 Minuten im Leerlauf.
Geben Sie den Befehl
wpr -stop gputrace.etl
ein.Um die Ablaufverfolgung mit Windows Performance Analyzer (WPA) zu öffnen, geben Sie den Befehl ein:
wpa.exe gputrace.etl
Öffnen Sie das Diagramm System Activity>Generic events.
- Filtern Sie nach „Microsoft-Windows-Dxgkrnl“-Ereignissen.
- Ziehen Sie die Spalte Prozess zur 2. Spalte.
- Überprüfen Sie, ob Sie WaitForVsync aufrufen. Beispielsweise durch APIs wie IDXGIOutput::WaitForVBlank (dxgi.h) über das
WaitForVerticalBlankEventInternal
Ereignis.
Weitere Informationen finden Sie unter Verwendung von Windows Performance Analyzer zur Analyse von Problemen mit Modern Standby.
Zusätzliche Ressourcen
Windows developer