Condividi tramite


Esercizio 4 - Usare MXA per analizzare glitch audio

In questo lab si analizzeranno gli errori audio. Glitch audio sono spesso causati da uno dei problemi seguenti:

  • Una chiamata di procedura posticipata (DPC) o una routine del servizio di interruzione (ISR) che viene eseguita più di 1 millisecondo.

  • Un thread driver o kernel che viene eseguito a livello di invio per 1 millisecondo o più lungo.

  • I dati non possono essere letti dal disco o la rete non è abbastanza veloce a causa dell'utilizzo elevato di disco o rete.

  • Il decodificatore hardware o software non può decodificare ed elaborare il flusso in tempo reale.

Passaggio 1: Aprire la traccia in MXA e trascinare i set di dati pertinenti nei pannelli

  1. Installare Media eXperience Analyzer (MXA) che fa parte di Windows ADK.

  2. Fare clic con il pulsante destro del mouse sul menu Start e scegliere prompt dei comandi (Amministrazione).

  3. Passare alla cartella in cui è stato installato MXA.

  4. Impostare i percorsi dei simboli MXA nel PC.

  5. Scaricare AudioGlitches_ThreadsAtDispatchLevel.etl da qui.

  6. Aprire il file di traccia AudioGlitches_ThreadsAtDispatchLevel.etl digitando il comando seguente:

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

    Ad esempio, se è stato scaricato AudioGlitches_ThreadsAtDispatchLevel.etl in C:\Performance\Media, digitare il comando seguente:

    xa.exe -i C:\Performance\Media\AudioGlitches_ThreadsAtDispatchLevel.etl
    
  7. Nella schermata iniziale MXA premere il pulsante Disattiva simboli per disattivare la ricerca dei simboli.

    Screenshot del pulsante di opzione Media eXperience Analyzer (MXA).

  8. Dopo aver caricato la traccia, chiudere tutti i pannelli aperti visualizzati al centro dell'applicazione premendo il piccolo X accanto al nome di ogni pannello.

  9. Aggiungere 3 nuovi pannelli. Fare clic su Visualizza>nuovo pannello o premere CTRL+N.

  10. Trascinare e rilasciare il set di dati Audio Glitches Classico nel nodo Media nel pannello superiore.

  11. Trascinare e rilasciare il set di dati utilità di pianificazione nel nodo CPU nel pannello 2° dalla parte superiore.

  12. Trascinare e rilasciare il set di dati Profili campionati nel nodo CPU nel pannello 3° dalla parte superiore.

  13. Filtrare i processi inattivi dalla visualizzazione in modo che sia possibile visualizzare più chiaramente l'altra attività del thread. Nell'albero del set di dati espandere il set di dati Utilità di pianificazione nel nodo CPU e fare clic sulla casella di controllo Nodo Thread inattive due volte per deselezionarla. Facendo clic sulla casella di controllo una volta evidenziati i dati nel grafico; facendo doppio clic su di esso viene deselezionato.

Passaggio 2: Identificare l'area della traccia in cui si è verificato un errore audio

È possibile esaminare i dati del motore audio dai file del log di traccia eventi (con estensione etl) per visualizzare una sequenza temporale visiva di quando si sono verificati questi errori e confrontare la sequenza temporale con altri set di dati per cercare i modelli.

  1. Ingrandire su un glitch audio facendo clic e trascinando il mouse su una delle barre del pannello Audio Glitches Classic nella parte superiore.

  2. Si noti che il processo diiexplore.exe nel set di dati utilità di pianificazione nel pannello 2° è stato in esecuzione per molto tempo (~20-35ms) appena prima dell'errore audio.

  3. Premere escape per ingrandire il 100% e quindi ripetere i due passaggi precedenti per verificare il modello in cui il processo diiexplore.exe è in esecuzione per durate lunghe (~20-35 ms) prima di ogni glitch audio.

  4. Per misurare il tempo all'interno del pannello, premere il tasto MAIUSC mentre si trascina il mouse da una parte della barra del processo iexplore.exe all'altra. La descrizione comando sul cursore del mouse mostra il numero di millisecondi misurati sulla sequenza temporale. Nella schermata MXA seguente il processo è in esecuzione per circa 35 millisecondi.

    Screenshot di Media eXperience Analyzer (MXA) che mostra il processo di esempio in esecuzione per circa 35 millisecondi.

Passaggio 3: Identificare la causa dei ritardi nella pipeline

Prima di questo problema audio, il processo diiexplore.exe a esecuzione prolungata è stato eseguito su uno dei core. Per scoprire in che modo il thread iexplore.exesta bloccando la pipeline audio, è possibile esaminare il set di dati Profili campione corrispondente nel nodo CPU .

  1. Se callStack dataviewer non è visibile nella finestra MXA, fare clic su Visualizza>visualizza visualizzatore> datiCallStack per aprirlo.

  2. Nel pannello Profili campionati (3° dall'alto), passare il puntatore del mouse sugli eventi del profilo di esempio che corrispondono allo stesso colore del thread iexplore.exe a esecuzione prolungata.

  3. La finestra CallStack mostra il callstack per ogni esempio. Si noti che un driver specifico, ImageRAMONA.sys, si trova nella parte superiore di CallStack quando si passa il mouse sulla maggior parte degli esempi nel core in cui iexplore.exe è in esecuzione.

  4. Sebbene il threadaudiodg.exesia in esecuzione con una priorità superiore (priorità 22) rispetto al thread iexplore.exe(priorità 19 ), il thread iexplore.exe chiama in un driver (ImageRAMONA.sys), che genera il livello IRQL del processore. Di conseguenza, audiodg.exe, che è in attesa di un DPC mantenuto dal dispatcher non ha la possibilità di eseguire sulla sua regolare cadenza di 10ms, causando problemi audio.

  5. Tenere premuto il tasto MAIUSC per bloccare i Visualizzatori datiCallStack e Proprietà e spostare il mouse su CallStack. Premere Copia.

Screenshot di Media eXperience Analyzer (MXA) che mostra CallStack dataviewer.