Exercice 4 - Utiliser MXA pour analyser les problèmes audio
Dans ce labo, vous allez analyser les problèmes audio. Les problèmes audio sont souvent causés par l’un des problèmes suivants :
Un appel de procédure différée (DPC) ou une routine de service d’interruption (ISR) qui s’exécute plus de 1 milliseconde.
Un pilote ou un thread de noyau qui s’exécute au niveau de la distribution pendant 1 milliseconde ou plus.
Les données ne peuvent pas être lues à partir du disque ou le réseau n’est pas assez rapide en raison d’une utilisation élevée du disque ou du réseau.
Le décodeur matériel ou logiciel ne peut pas décoder et traiter le flux plus rapidement que le temps réel.
Étape 1 : Ouvrir la trace dans MXA et faire glisser les jeux de données pertinents dans les panneaux
Installez Media eXperience Analyzer (MXA) qui fait partie du Windows ADK.
Cliquez avec le bouton droit sur le menu Démarrer, puis cliquez sur Invite de commandes (Administration).
Accédez au dossier où vous avez installé MXA.
Définissez les chemins de symbole MXA sur votre PC.
Téléchargez AudioGlitches_ThreadsAtDispatchLevel.etl à partir d’ici.
Ouvrez le fichier de trace AudioGlitches_ThreadsAtDispatchLevel.etl en tapant la commande suivante :
xa.exe -i <AudioGlitches_ThreadsAtDispatchLevel.etl location>\AudioGlitches_ThreadsAtDispatchLevel.etl
Par exemple, si vous avez téléchargé AudioGlitches_ThreadsAtDispatchLevel.etl sur C:\Performance\Media, vous devez taper la commande suivante :
xa.exe -i C:\Performance\Media\AudioGlitches_ThreadsAtDispatchLevel.etl
Sur l’écran de démarrage MXA , appuyez sur le bouton Désactiver les symboles pour désactiver la recherche de symboles.
Une fois la trace chargée, fermez tous les panneaux ouverts qui s’affichent au centre de l’application en appuyant sur le petit X en regard du nom de chaque panneau.
Ajoutez 3 nouveaux panneaux. Cliquez sur Afficher le>nouveau panneau ou appuyez sur Ctrl+N.
Faites glisser et déposez le jeu de données Audio Glitches Classic sous le nœud Média dans le panneau supérieur.
Faites glisser et déposez le jeu de données Scheduler sous le nœud processeur dans le 2e panneau à partir du haut.
Faites glisser et déposez le jeu de données Profils échantillonné sous le nœud processeur dans le 3e panneau à partir du haut.
Filtrez les processus inactifs hors de la vue afin de voir plus clairement l’autre activité de thread. Dans l’arborescence du jeu de données, développez le jeu de données Scheduler dans le nœud PROCESSEUR , puis cliquez deux fois sur la case à cocher Nœud Threads inactifs pour le désélectionner. Cliquer une fois sur la case à cocher met en surbrillance les données dans le graphique ; Le fait de cliquer deux fois sur celui-ci le désélectionne.
Étape 2 : Identifier la région de la trace où un problème audio s’est produit
Vous pouvez examiner les données du moteur audio des fichiers journaux de trace des événements (.etl) pour voir un visuel chronologie du moment où ces problèmes se sont produits et comparer les chronologie à d’autres jeux de données à rechercher des modèles.
Effectuez un zoom avant sur un problème audio en cliquant et en faisant glisser la souris sur l’une des barres du panneau Audio Glitches Classic en haut.
Notez que le processus deiexplore.exe dans le jeu de données Scheduler dans le 2e panneau a été en cours d’exécution pendant une longue période (~20-35 ms) juste avant le problème audio.
Appuyez sur échappement pour effectuer un zoom arrière de 100 %, puis répétez les deux étapes précédentes pour vérifier le modèle où le processus iexplore.exes’exécute pendant de longues durées (~20-35 ms) avant chaque problème audio.
Pour mesurer le temps dans le panneau, appuyez sur la touche Maj tout en faisant glisser votre souris d’une extrémité de la barre de processus iexplore.exe à l’autre. L’info-bulle sur le curseur de la souris indique le nombre de millisecondes que vous mesurez sur le chronologie. Dans la capture d’écran MXA ci-dessous, le processus s’est exécuté pendant environ 35 millisecondes.
Étape 3 : Identifier la cause des retards dans le pipeline
Avant ce problème audio, le processus iexplore.exe de longue durée s’exécutait sur l’un des cœurs. Pour savoir comment le thread iexplore.exe bloque le pipeline audio, vous pouvez examiner le jeu de données Exemples de profils correspondant dans le nœud du processeur .
Si le visionneuse de données CallStack n’est pas visible dans la fenêtre MXA, cliquez sur Afficher les>visionneuses> de donnéesCallStack pour l’ouvrir.
Dans le panneau Profils échantillonné (3e à partir du haut), pointez sur les exemples d’événements de profil qui correspondent à la même couleur du thread iexplore.exe de longue durée.
La fenêtre CallStack affiche la pile d’appels pour chaque exemple. Notez qu’un pilote spécifique, ImageRAMONA.sys, se trouve en haut de CallStack lorsque vous pointez sur la plupart des exemples dans le cœur sur lequeliexplore.exes’exécute .
Bien que le thread audiodg.exe s’exécute à une priorité plus élevée (priorité 22) que le thread iexplore.exe (priorité 19), le thread iexplore.exe appelle un pilote (ImageRAMONA.sys), ce qui augmente le niveau IRQL du processeur. Par conséquent, audiodg.exe, qui attend un DPC conservé par le répartiteur n’a pas la possibilité de s’exécuter sur sa cadence régulière de 10 ms, ce qui entraîne des problèmes audio.
Maintenez la touche MAJ enfoncée pour figer les visionneuses de donnéesCallStack et Propriétés, puis déplacez votre souris sur CallStack. Appuyez sur Copier.