Freigeben über


Übung 4: Verwenden von MXA zum Analysieren von Audiostörungen

In diesem Lab analysieren Sie Audiostörungen. Audiostörungen werden häufig durch eines der folgenden Probleme verursacht:

  • Ein Deferred Procedure Call (DPC) oder eine Interrupt Service Routine (ISR), der bzw. die länger als 1 Millisekunde ausgeführt wird.

  • Ein Treiber oder Kernelthread, der auf Verteilerebene für 1 Millisekunde oder länger ausgeführt wird.

  • Daten können nicht vom Datenträger gelesen werden, oder das Netzwerk ist aufgrund einer hohen Datenträger- oder Netzwerkauslastung nicht schnell genug.

  • Der Hardware- oder Softwaredecoder kann den Datenstrom nicht schneller als in Echtzeit entschlüsseln und verarbeiten.

Schritt 1: Öffnen der Ablaufverfolgung in MXA und Ziehen der relevanten Datasets in Panels

  1. Installieren Sie den Media eXperience Analyzer (MXA), der Teil des Windows ADK ist.

  2. Klicken Sie mit der rechten Maustaste auf das Menü Start, und klicken Sie auf Eingabeaufforderung (Administrator).

  3. Öffnen Sie den Ordner, in dem der MXA installiert wurde.

  4. Legen Sie die MXA-Symbolpfade auf Ihrem PC fest.

  5. Laden Sie AudioGlitches_ThreadsAtDispatchLevel.etl von hier herunter.

  6. Öffnen Sie die Ablaufverfolgungsdatei AudioGlitches_ThreadsAtDispatchLevel.etl, indem Sie den folgenden Befehl eingeben:

    xa.exe -i <AudioGlitches_ThreadsAtDispatchLevel.etl location>\AudioGlitches_ThreadsAtDispatchLevel.etl
    

    Wenn Sie z. B. AudioGlitches_ThreadsAtDispatchLevel.etl in C:\Performance\Media heruntergeladen haben, geben Sie den folgenden Befehl ein:

    xa.exe -i C:\Performance\Media\AudioGlitches_ThreadsAtDispatchLevel.etl
    
  7. Klicken Sie auf dem MXA-Begrüßungsbildschirm auf die Schaltfläche Turn Symbols Off (Symbole deaktivieren), um die Symbolsuche zu deaktivieren.

    Screenshot des Media eXperience Analyzer (MXA) mit der Optionsschaltfläche für Symbole

  8. Nachdem die Ablaufverfolgung geladen wurde, schließen Sie alle geöffneten Panels, die in der Mitte der Anwendung angezeigt werden, indem Sie auf das kleine X neben dem Namen der einzelnen Bereiche klicken.

  9. Fügen Sie 3 neue Panels hinzu. Klicken Sie auf View (Anzeigen) >New Panel (Neues Panel), oder drücken Sie STRG+N.

  10. Ziehen Sie das Dataset Audio Glitches Classic unter dem Knoten Media (Medien) in das obere Panel.

  11. Ziehen Sie das Dataset Scheduler unter dem Knoten CPU in den zweiten Bereich von oben.

  12. Ziehen Sie das Dataset Sampled Profiles unter dem Knoten CPU in den dritten Bereich von oben.

  13. Filtern Sie die Leerlaufprozesse aus der Ansicht, damit Sie die andere Threadaktivität deutlicher sehen können. Erweitern Sie in der Datasetstruktur das Dataset Scheduler im Knoten CPU, und klicken Sie zweimal auf das Kontrollkästchen Idle Threads (Leerlaufthreads), um es zu deaktivieren. Wenn Sie einmal auf das Kontrollkästchen klicken, werden die Daten im Diagramm hervorgehoben; durch zweimaliges Klicken wird die Auswahl deaktiviert.

Schritt 2: Identifizieren des Bereichs der Ablaufverfolgung, in dem eine Audiostörung aufgetreten ist

Sie können die Audiomoduldaten aus den Protokolldateien der Ereignisablaufverfolgung (ETL-Dateien) anzeigen, um in einer visuellen Zeitachse anzuzeigen, wo diese Störungen aufgetreten sind, und die Zeitachse mit anderen Datensätzen vergleichen, um nach Mustern zu suchen.

  1. Vergrößern Sie eine Audiostörung, indem Sie auf einen der Balken im Panel Audio Glitches Classic oben klicken und ziehen.

  2. Beachten Sie, dass der Prozess iexplore.exe im Dataset Scheduler im zweiten Panel unmittelbar vor der Audiostörung lange ausgeführt wurde (~20-35 ms).

  3. Drücken Sie die ESCAPE-TASTE, um auf 100 % zu verkleinern, und wiederholen Sie dann die vorherigen beiden Schritte, um das Muster zu überprüfen, in dem der Prozess iexplore.exe vor jeder Audionstörung lange (~20-35 ms) ausgeführt wurde.

  4. Für die Zeitmessung innerhalb des Panels drücken Sie die UMSCHALTTASTE, während Sie die Maus von einem Ende des Balkens für den Prozess iexplore.exe zum anderen ziehen. Die QuickInfo über dem Cursor zeigt Ihnen den gemessen Wert auf der Zeitachse in Millisekunden. Im folgenden MXA-Screenshot wurde der Prozess für ca. 35 Millisekunden ausgeführt.

    Screenshot des Media eXperience Analyzer (MXA) mit einem Beispielprozess, der ca. 35 Millisekunden ausgeführt wird

Schritt 3: Ermitteln der Ursache der Verzögerungen in der Pipeline

Vor dieser Audiostörung wurde der lange ausgeführte Prozess iexplore.exe auf einem der Kerne ausgeführt. Wie der Thread iexplore.exe die Audiopipeline verzögert, können Sie herausfinden, wenn Sie sich das entsprechende Dataset Sampled Profiles im CPU-Knoten ansehen.

  1. Wenn der CallStack-Datenviewer im MXA-Fenster nicht sichtbar ist, klicken Sie auf View (Anzeigen) >Data Viewers (Datenviewer) >CallStack, um ihn zu öffnen.

  2. Bewegen Sie den Cursor im Panel Sampled Profiles (drittes von oben) über die Beispielprofilereignisse, deren Farbe dem zeitintensiven Thread iexplore.exe entspricht.

  3. Das Fenster CallStack (Aufrufstack) zeigt den Aufrufstack für jedes Beispiel an. Beachten Sie, dass sich ein bestimmter Treiber, ImageRAMONA.sys, oben in CallStack (Aufrufstack) befindet, wenn Sie auf die meisten Beispiele im Kern zeigen, auf dem iexplore.exe ausgeführt wird.

  4. Obwohl der Thread audiodg.exe mit höherer Priorität (Priorität 22) ausgeführt wird als der Thread iexplore.exe (Priorität 19), ruft der Thread iexplore.exe einen Treiber (ImageRAMONA.sys) auf, wodurch die IRQL-Ebene des Prozessors erhöht wird. Daher hat audiodg.exe, die auf einen von dem Verteiler aufbewahrten DPC wartet, keine Chance, mit ihrer regulären 10-ms-Kadenz zu laufen, was zu Audiostörungen führt.

  5. Halten Sie die UMSCHALTTASTE gedrückt, um CallStack (Aufrufstack) und Properties Data Viewers (Eigenschaften für Datenviewer) zu fixieren, und bewegen Sie die Maus zu CallStack (Aufrufstack). Klicken Sie auf Copy (Kopieren).

Screenshot: Media eXperience Analyzer (MXA) mit CallStack-Datenviewer