
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:
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
.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).
Pare de rastrear/salve o log
xperf -d interrupt_trace.etl
Abra o rastreamento em
Windows Performance Analyzer
(parte do Windows Performance Toolkit); alguns lugares mencionam o usoxperfview
.Expanda
Computation
->CPU Usage (Sampled)
->DPC and ISR Usage by Module, Stack
, clique com o botão direito eadd graph to analysis view
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 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.