Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie Sie Leistungsüberwachungstools aus dem Windows Performance Toolkit verwenden, um detaillierte Leistungsprofile für WinUI-Anwendungen zu erstellen.
Wie verwende ich den Windows Performance Recorder zum Überwachen von WinUI-Apps?
Der Windows Performance Recorder (WPR) kann verwendet werden, um detaillierte Event Tracing for Windows (ETW) Aufzeichnungen von System- und Anwendungsverhalten und Ressourcennutzung basierend auf integrierten Profilen zu erstellen. Diese ETW-Aufzeichnungen können dann vom Windows Performance Analyzer (WPA) verarbeitet werden, um eine Reihe von Diagrammen und Tabellen für einen einfacheren Verbrauch und eine detaillierte Analyse der CPU-Auslastung, Energieprobleme, schlechter System- oder Anwendungsleistung und anderer Leistungsprobleme zu erstellen.
Hinweis
Obwohl es sowohl GUI- als auch Befehlszeilenversionen des WPR gibt, bezieht sich dieses Thema nur auf die GUI-Version (weitere Details zu beiden Versionen finden Sie in Einführung in WPR ).
WPR-Profile
WPR-Profile werden verwendet, um Informationen zu verschiedenen Aspekten und Verhaltensweisen Ihrer App zu sammeln.
In der folgenden Abbildung wird das Fenster „Windows Performance Recorder“ mit dem ausgewählten Profil „CPU-Auslastung“ (CPU-Auslastung für jede CPU auf dem System) und dem „XAML-Aktivitätsprofil“ (Ereignisse von XAML-bezogenen Anbietern, z. B. WinUI) angezeigt.
Wie verwende ich den Windows Performance Analyzer mit WinUI-Apps?
WinUI ist eine deklarative Retained-Mode-API, bei der die App eine Struktur von UIElements beschreibt und WinUI das Layout ausführt und rendert. Dies erfolgt im UI-Thread in Batches namens „Frames“, die schnell abgeschlossen werden sollten, idealerweise innerhalb eines Aktualisierungsintervalls der Anzeige. Wenn Frames lange ausgeführt werden, verzögert dies nicht nur die Veröffentlichung von Aktualisierungen auf der Anzeige, sondern verhindert auch, dass der UI-Thread Eingaben verarbeitet. Langsame Frames sind zwar nicht der einzige Grund für Reaktionsfähigkeitsprobleme, aber einer der häufigsten.
Installieren des Plug-Ins „XAML-Frameanalyse“
WinUI protokolliert ETW-Ereignisse, die den Start und das Ende jedes Frames verfolgen (siehe den folgenden Screenshot der WPA-Tabelle „Generische Ereignisse“). Da die Dauer jedes Frames jedoch manuell berechnet werden muss, ist es schwierig, langsame Frame-Vorkommen zu identifizieren.
Um dieses Problem zu beheben, ist ein neues Tabellen-Plug-In "XAML-Frameanalyse" im Windows Assessment Toolkit (ADK) 10.1.26100.1 und höher enthalten. Diese Tabelle berechnet und zeigt die Dauer jedes Frames (zusammen mit anderen zeitaufwendigen Vorgängen) an.
Hinweis
Die Tabelle "XAML-Frame-Analyse" erfordert Windows Performance Analyzer (WPA) aus Windows ADK 10.1.26100.1 oder eine neuere Version. Die Version von WPR, die für die Ablaufverfolgung verwendet wird, spielt keine Rolle.
Nach der Installation des ADK muss die Tabelle "XAML-Frameanalyse" aktiviert werden, indem Sie die Konfigurationsdatei "perfcore.ini" im WPA-Ordner bearbeiten (in der Regel C:\Programme (x86)\Windows Kits\10\Windows Performance Toolkit). Schließen Sie dazu alle geöffneten Instanzen von WPA, öffnen Sie „perfcore.ini“ in einem Text-Editor, fügen Sie perf_xaml.dll der Liste der DLL-Dateien hinzu, speichern und schließen Sie die Datei. Starten Sie WPA neu, wodurch nun das Diagramm „XAML-Frameanalyse“ unten im Abschnitt „Systemaktivität“ angezeigt werden sollte.
Verwenden des Plug-Ins „XAML-Frameanalyse“
Die XAML-Frameanalyse unterstützt zwei Ansichten (beide Ansichten zeigen die gleichen Spalten):
- „Interessante XAML-Frames“ (Standard) – Zeigt WinUI-Frames basierend auf Heuristiken an, die diejenigen identifizieren, die höchstwahrscheinlich Probleme mit der Reaktionsfähigkeit verursachen. Diese entsprechen Regionen, die mit Vorgängen wie WinUI-Initialisierung, Frame-Navigation oder Flyout-Anzeige beginnen und mit dem Ende des nächsten Frames enden. Diese Szenarien umfassen in der Regel umfangreiche Änderungen an der UIElement-Struktur und sind am anfälligsten für Leistungsprobleme.
- "Alle Xaml-Informationen" – Zeigt alle WinUI-Frames aus allen Prozessen an, die im Tracing gefunden wurden. Für Vorgänge wie einen Frame oder einen Layoutdurchlauf berechnet das Plug-In automatisch die Dauer basierend auf den Start- und Stoppereignissen und zeigt sie an.
Der folgende Screenshot zeigt, wie Sie zwischen XAML-Frameanalyseansichten wechseln.
Beide XAML-Frame-Analyseansichten enthalten die folgenden Spalten:
| Title | Wert |
|---|---|
| Prozess | Prozessname und ID |
| Thread-ID | Thread-ID |
| Typ | Beschreibt das Ereignis, das der Zeile entspricht. Mögliche Werte sind:
|
| IstInteressant | Angabe, ob die Zeile als interessant betrachtet wird. Nur interessante Zeilen werden in der Ansicht „Interessante XAML-Frames“ angezeigt. |
| Dauer (ms) | Die Dauer der Zeile. Berechnet aus Start- und Stoppereignissen. |
| Gewicht (ms) | Die tatsächliche CPU-Ausführungszeit, die der Dauer entspricht. |
| Beginn (s) | Der Zeitpunkt des Startereignisses |
| Stopp (s) | Der Zeitpunkt des Stoppereignisses. |
Spalten können nach Typ oder Dauer sortiert werden, um potenzielle Probleme zu identifizieren, z. B. die teuersten Frames mit der längsten Dauer in der Ablaufverfolgung (siehe folgende Abbildung). Sie können auch einen Drilldown zu bestimmten Zeilen durchführen, um die teuren Vorgänge und potenziellen Optimierungen zu identifizieren.
Windows developer