Analysieren von USB-Leistungsproblemen mithilfe von Xperf und Netmon
Dieses Thema enthält Informationen zum Anzeigen der Zeitleiste von Ereignissen, die in einem USB ETW-Protokoll erfasst wurden.
Xperf stellt eine Reihe von Kernelereignissen zum Analysieren von Leistungsproblemen bereit. Es zeichnet diese Ereignisse auf und stellt sie in Diagrammen dar.
Wenn Sie sowohl mit Xperf als auch mit den USB ETW-Ereignissen vertraut sind, können Sie ein USB ETW-Protokoll und ein Xperf-Protokoll eines Problemszenarios erstellen, die beiden Protokolldateien zusammenführen und sie analysieren. Wenn Sie Xperf und Netmon zusammen verwenden, können Sie sowohl die Systemereignisse (Xperf) als auch die USB-Ereignisse (Netmon) für ein bestimmtes Szenario anzeigen.
Starten Sie die beiden Ablaufverfolgungen parallel, indem Sie die folgenden Befehle an einer Eingabeaufforderung mit erhöhten Rechten ausgeben:
Xperf –on Diag
Logman start Usbtrace -p Microsoft-Windows-USB-USBPORT -o usbtrace.etl -ets -nb 128 640 -bs 128
Logman update Usbtrace -p Microsoft-Windows-USB-USBHUB –ets
Führen Sie die Aktionen für das Problemszenario aus, und beenden Sie dann die Ablaufverfolgungen, indem Sie die folgenden Befehle an einer Eingabeaufforderung mit erhöhten Rechten ausgeben:
Logman stop Usbtrace -ets
Xperf –stop
Führen Sie die beiden Ablaufverfolgungsprotokolldateien mit dem folgenden Befehl in eine einzelne Datei zusammen (Berechtigungen sind nicht erforderlich):
Xperf –merge usbtrace.etl C:\kernel.etl merged.etl
In diesem Beispiel wird eine zusammengeführte Datei mit dem Namen merged.etl erstellt. Sie können diese Datei entweder mit dem Xperf-Leistungsanalyse oder mit Netmon öffnen. Führen Sie den folgenden Befehl aus, um die Datei in Xperf zu öffnen:
Xperf merged.etl
Xperf zeigt spezialisierte Diagramme für eine Vielzahl von Kernelereignissen, wie in dieser Abbildung dargestellt. Weitere Informationen zu Xperf-Aufzeichnungsoptionen und der Xperf-Benutzeroberfläche finden Sie in der Xperf-Command-Line-Referenz und windows Leistungsanalyse (WPA).
Um das zusammengeführte Ablaufverfolgungsprotokoll in Netmon zu öffnen, führen Sie Netmon aus, klicken Sie auf Datei –> Öffnen –> Erfassung, und wählen Sie dann die Datei aus. Xperf und Netmon können die zusammengeführte Datei gleichzeitig geöffnet haben. Sie können zwischen der Xperf-GUI und Netmon wechseln, um zu analysieren, was im System und im USB-Stapel während eines bestimmten Zeitraums passiert ist. Sie können die USB-Ereignisse in Xperf zusätzlich zu den Systemereignissen anzeigen, aber die USB-Ereignisse können in Netmon einfacher zu lesen sein.
Standardmäßig zeigt Netmon alle Ereignisse in der zusammengeführten Ablaufverfolgungsdatei an. Um nur die USB-Ereignisse anzuzeigen, wenden Sie einen Filter wie den folgenden an:
ProtocolName == "USBHub_MicrosoftWindowsUSBUSBHUB" OR ProtocolName == "USBPort_MicrosoftWindowsUSBUSBPORT"
Sie können diesen Filtertext im Netmon-Filteranzeigebereich eingeben. Weitere Informationen zur Verwendung von Filtern in Netmon finden Sie unter "USB Netmon-Filter" in dieser Fallstudie: Problembehandlung für ein unbekanntes USB-Gerät mithilfe von ETW und Netmon.
Um das Timing von USB-Ereignissen zu analysieren, können Sie den Zeitunterschied zwischen den angezeigten Ereignissen in Netmon untersuchen.
So zeigen Sie den Zeitunterschied der angezeigten Ereignisse an
Klicken Sie im Bereich Framezusammenfassung mit der rechten Maustaste auf einen Spaltentitel, und wählen Sie Spalten auswählen aus.
Wählen Sie in der Liste Deaktivierte Spaltendie Option Zeitdelta aus, klicken Sie auf Hinzufügen, und klicken Sie dann auf OK.
Schreiben Sie einen Filter, der nur die Ereignisse anzeigt, deren Timing Sie sehen möchten. Fügen Sie beispielsweise den folgenden Filter hinzu, um die Verzögerungen zwischen nicht überlappender Massenübertragungsversendung und abgeschlossenen Ereignissen anzuzeigen:
Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Dispatch URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER" OR Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Complete URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER" OR Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Complete URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER with Data"
- Sie können die Ereignis-IDs (Beschreibungen) aus den Ereignissen auswählen, die in der Ablaufverfolgung angezeigt werden.
- Um eine Ereignis-ID in einem Filter zu verwenden, klicken Sie mit der rechten Maustaste auf die Beschreibung eines Ereignisses im Bereich Framezusammenfassung , und wählen Sie Beschreibung zum Anzeigefilter hinzufügen aus.