Compartilhar via


Exercício 4 – Usar o MXA para analisar falhas de áudio

Neste laboratório, você analisará falhas de áudio. As falhas de áudio geralmente são causadas por um dos seguintes problemas:

  • Uma DPC (Chamada de Procedimento Adiado) ou uma ISR (Rotina de Serviço de Interrupção) que é executada com mais de 1 milissegundo.

  • Um thread de kernel ou driver executado no nível de expedição por 1 milissegundo ou mais.

  • Os dados não podem ser lidos do disco ou a rede não é rápida o suficiente devido à alta utilização de disco ou rede.

  • O decodificador de hardware ou software não pode decodificar e processar o fluxo mais rápido do que em tempo real.

Etapa 1: Abra o rastreamento no MXA e arraste os conjuntos de dados pertinentes para painéis

  1. Instale o MXA (Media eXperience Analyzer), que faz parte do Windows ADK.

  2. Clique com o botão direito do mouse no menu Iniciar e clique em Prompt de Comando (Administração).

  3. Navegue até a pasta em que você instalou o MXA.

  4. Defina os caminhos do símbolo MXA em seu computador.

  5. Baixe AudioGlitches_ThreadsAtDispatchLevel.etlaqui.

  6. Abra o arquivo de rastreamento AudioGlitches_ThreadsAtDispatchLevel.etl digitando o seguinte comando:

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

    Por exemplo, se você baixasse AudioGlitches_ThreadsAtDispatchLevel.etl para C:\Performance\Media, digitaria o seguinte comando:

    xa.exe -i C:\Performance\Media\AudioGlitches_ThreadsAtDispatchLevel.etl
    
  7. Na tela inicial do MXA , pressione o botão Desligar Símbolos para desativar a pesquisa de símbolos.

    Captura de tela do MXA (Media eXperience Analyzer), botão de opção símbolos.

  8. Depois que o rastreamento for carregado, feche todos os painéis abertos que aparecem no centro do aplicativo pressionando o pequeno X ao lado do nome de cada painel.

  9. Adicione três novos painéis. Clique em Exibir>Novo Painel ou pressione CTRL+N.

  10. Arraste e solte o conjunto de dados Clássico de Falhas de Áudio sob o nó Mídia no painel superior.

  11. Arraste e solte o conjunto de dados agendador sob o nó da CPU para o segundo painel da parte superior.

  12. Arraste e solte o conjunto de dados Perfis Amostrados no nó da CPU para o terceiro painel da parte superior.

  13. Filtre os processos ociosos da exibição para que você possa ver a outra atividade de thread com mais clareza. Na árvore do conjunto de dados, expanda o conjunto de dados agendador no nó da CPU e clique na caixa de seleção Nó threads ociosos duas vezes para desmarcá-lo. Clicar na caixa de seleção uma vez realça os dados no grafo; clicar nele duas vezes o desmarca.

Etapa 2: identificar a região do rastreamento em que ocorreu uma falha de áudio

Você pode examinar os dados do mecanismo de áudio dos arquivos de log de rastreamento de eventos (.etl) para ver uma linha do tempo visual de quando essas falhas ocorreram e comparar a linha do tempo com outros conjuntos de dados para procurar padrões.

  1. Amplie uma falha de áudio clicando e arrastando o mouse sobre uma das barras no painel Audio Glitches Classic na parte superior.

  2. Observe que o processo deiexplore.exe no conjunto de dados agendador no segundo painel foi executado por um longo tempo (aproximadamente 20-35ms) pouco antes da falha de áudio.

  3. Pressione escape para reduzir 100% e repita as duas etapas anteriores para verificar o padrão em que o processo deiexplore.exe estava em execução por longas durações (aproximadamente 20-35 ms) antes de cada falha de áudio.

  4. Para medir o tempo dentro do painel, pressione a tecla SHIFT enquanto arrasta o mouse de uma extremidade da barra de processo iexplore.exe para a outra. A dica de ferramenta sobre o cursor do mouse mostra quantos milissegundos você está medindo no linha do tempo. Na captura de tela do MXA abaixo, o processo estava em execução por cerca de 35 milissegundos.

    Captura de tela do MXA (Media eXperience Analyzer) mostrando o processo de exemplo em execução por cerca de 35 milissegundos.

Etapa 3: identificar a causa dos atrasos no pipeline

Antes dessa falha de áudio, o processo de iexplore.exe de execução prolongada estava em execução em um dos núcleos. Para descobrir como o thread deiexplore.exe está parando o pipeline de áudio, você pode examinar o conjunto de dados perfis amostrados correspondente no nó da CPU .

  1. Se o visualizador de dados CallStack não estiver visível na janela MXA, clique em Exibir> Chamada deVisualizadores> deDadosStack para abri-lo.

  2. No painel Perfis Amostrados (3º da parte superior), passe o mouse sobre os eventos de perfil de exemplo que correspondem à mesma cor do thread deiexplore.exe de execução longa.

  3. A janela CallStack mostra a pilha de chamadas para cada exemplo. Observe que um driver específico, ImageRAMONA.sys, está na parte superior do CallStack quando você passa o mouse sobre a maioria dos exemplos no núcleo em que iexplore.exe está sendo executado.

  4. Embora o threadaudiodg.exe esteja em execução com prioridade mais alta (prioridade 22) do que o thread deiexplore.exe (prioridade 19), o threadiexplore.exe chama um driver (ImageRAMONA.sys), o que eleva o nível IRQL do processador. Como resultado, audiodg.exe, que está aguardando um DPC retido pelo dispatcher não tem a chance de ser executado em sua cadência regular de 10ms, resultando em falhas de áudio.

  5. Mantenha pressionada a tecla SHIFT para congelar o CallStack e os Visualizadores de Dados de Propriedades e mover o mouse para o CallStack. Pressione Copiar.

Captura de tela do MXA (Media eXperience Analyzer) mostrando o verificador de dados CallStack.