Freigeben über


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

  1. 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.

  2. Starten Sie Ihre App, und navigieren Sie zu einer Ansicht, die voraussichtlich häufig verwendet wird.

  3. 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

  1. Ö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“)

  2. Geben Sie den Befehl wpr -start power -filemode ein.

  3. Lassen Sie das Gerät 5 Minuten im Leerlauf.

  4. Geben Sie den Befehl wpr -stop idletrace.etl ein.

  5. Um die Ablaufverfolgung mit Windows Performance Analyzer (WPA) zu öffnen, geben Sie den Befehl ein: wpa.exe idletrace.etl

  6. Ö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.

    WPA-Diagramm mit CPU-Prozess, Anzahl und Prozent der Nutzung

  7. Ö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.

  1. Öffnen Sie eine Befehlszeile (PowerShell oder Eingabeaufforderung) im Administratormodus.

  2. Geben Sie den Befehl wpr -start gpu -filemode ein.

  3. Lassen Sie das Gerät 5 Minuten im Leerlauf.

  4. Geben Sie den Befehl wpr -stop gputrace.etl ein.

  5. Um die Ablaufverfolgung mit Windows Performance Analyzer (WPA) zu öffnen, geben Sie den Befehl ein: wpa.exe gputrace.etl

  6. Ö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.

    WPA-Diagramm mit MS Edge Webview2-Ereignis

Weitere Informationen finden Sie unter Verwendung von Windows Performance Analyzer zur Analyse von Problemen mit Modern Standby.

Zusätzliche Ressourcen