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

37

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

jlupolt
fonte

Respostas:

41

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

  1. Capturar o log ETW do problema

    A maneira mais fácil de fazer isso é usando o Windows Performance Recorder . Não tenho certeza de quando ele apareceu pela primeira vez, mas parece estar embutido nas versões recentes do Windows. Defina o perfil para 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 obterá o seguinte erro: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).

  2. Parar rastreamento / salvar 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

    Windows Performance Analyzer

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

Dave Andersen
fonte
Agradável! Muito bem feito.
Michal Sokolowski
Bem explicado. No meu caso, acabou por ser audiodg.exe. Assim que eu o matei, os DPCs foram quase nada. Eu encontrei detalhes adicionais sobre como resolver esse aqui: windows-exe-errors.com/...
CJBS
Uma correção - você precisa expandir Computação-> Uso da CPU (amostrado) - "Uso da CPU" é ambíguo.
Bruce Dawson
No meu caso, eu tinha 10% de DPC no Gerenciador de Tarefas, mas a maioria era ntoskrnl.exe no rastreamento. No entanto, a expansão da pilha desse módulo revelou um serviço de terceiros "RfeCo10X64.sys", que fazia parte do Killer Performance Suite. Eu desinstalei esse software (algum sistema de priorização de rede que estava fazendo o oposto do que ele tentou) e meu problema foi resolvido.
Chris
Funciona no Windows 10? Alguma outra ferramenta disponível? Não quero instalar arquivos GiB de todo o pacote.
Unknown123
4

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

Windows Performance Analyzer (WPA)

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

Depois de aprender a usar o xperf; Confira;

A ação DPC / ISR

A ação DPC / ISR produz um relatório de texto que resume as várias métricas relacionadas aos 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

intervalo 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 é imprimir todos os três tipos de relatório.

RandomNickName42
fonte
3

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/

Syclone0044
fonte
1
Bem-vindo à falha do servidor! Geralmente, gostamos de respostas no site para poder se manter por conta própria - os links são ótimos, mas se esse link quebrar, a resposta deve ter informações suficientes para continuar sendo útil. Considere editar sua resposta para incluir mais detalhes. Veja o FAQ para mais informações.
Slm
0

Dê uma olhada no Windows Process Explorer:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Isso deve ajudar.

davey
fonte
2
O Process Explorer mostra quanto tempo do processador é gasto em interrupções, mas, até onde eu sei, não fornece uma maneira de determinar o que está causando as interrupções.
Jlupolt