Como posso descobrir o que está causando interrupções no Windows?

Como posso descobrir o que está causando interrupções no Windows?

Ocasionalmente, encontro servidores (Windows 2003 e 2008) com alta% de tempo de interrupção do processador. Existe uma maneira de ver qual programa ou dispositivo está causando as interrupções?

Responder1

Depois de pesquisar a documentação (com base nas outras respostas aqui), este é o processo que acabei usando:

  1. Capture o log ETW do problema

    A maneira mais fácil de fazer isso é usando oGravador de desempenho do Windows. Não tenho certeza de quando apareceu pela primeira vez, mas parece estar integrado em versões recentes do Windows. Defina o perfil como CPU usage.

    Gravador de desempenho do Windows

    ou, usando um prompt de comando elevado, navegue até a pasta que o contém e use a ferramenta de linha de comando xperf:

    xperf -on base+interrupt+dpc
    

    Observe que você precisará fechar o Process Monitor ou qualquer outro aplicativo que use ETW ou receberá o seguinte erro: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).

  2. Pare de rastrear/salve o log

    xperf -d interrupt_trace.etl
    
  3. Abra o rastreamento em Windows Performance Analyzer(parte do Windows Performance Toolkit); alguns lugares mencionam o uso xperfview.

  4. Expanda Computation-> CPU Usage (Sampled)-> DPC and ISR Usage by Module, Stack, clique com o botão direito eadd graph to analysis view

    Analisador de Desempenho do Windows

  5. Isso apontava diretamente para o motorista em questão. Nesse caso, HDAudBus.sys está usando uma constante de 10,82% da minha CPU por meio de interrupções, que é exatamente o que o Process Explorer estava me mostrando.

Responder2

Se você consegue lidar com ferramentas de sistema de baixo nível;

Analisador de desempenho do Windows (WPA)

O Windows Performance Analyzer (WPA) é um conjunto de ferramentas de monitoramento de desempenho usado para produzir perfis de desempenho detalhados de sistemas operacionais e aplicativos Microsoft Windows.

Depois de aprender como usar o xperf; Confira;

A Ação DPC/ISR

A ação DPC/ISR produz um relatório de texto que resume as diversas métricas relativas a DPCs e ISRs. O uso para esta ação é:

Copiar código -a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2 ]

Opção

Descrição

dpc

Mostrar estatísticas apenas para DPC

isr

Mostrar estatísticas apenas para ISR

resumo

Mostrar relatório resumido

intervalo [dt]

Mostrar relatório de uso para intervalos de dt, o padrão é 1 segundo

balde [dt]

Mostrar histograma para intervalos de dt, o padrão é 2 segundos

gama T1 T2

Mostrar atrasos entre T1 e T2

If no data type is specified, default is to show report for both DPC

e ISR. Se nenhum tipo de relatório for especificado, o padrão será imprimir todos os três tipos de relatório.

Responder3

Aqui está o melhor artigo que encontrei sobre como fazer isso, com tutoriais, capturas de tela e links para download das ferramentas relevantes:

http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/

Responder4

Duas ótimas ferramentas sãoLatênciaMoneVerificador de latência DPC.

informação relacionada