
De vez en cuando me encuentro con servidores (Windows 2003 y 2008) con un alto porcentaje de tiempo de interrupción del procesador. ¿Hay alguna manera de ver qué programa o dispositivo está causando las interrupciones?
Respuesta1
Después de revisar la documentación (según las otras respuestas aquí), este es el proceso que terminé usando:
Capture el registro ETW del problema
La forma más sencilla de hacerlo es utilizando elGrabador de rendimiento de Windows. No estoy seguro de cuándo apareció por primera vez, pero parece estar integrado en versiones recientes de Windows. Establezca el perfil en
CPU usage
.o, usando un símbolo del sistema elevado, navegue hasta la carpeta que lo contiene y use la herramienta de línea de comandos xperf:
xperf -on base+interrupt+dpc
Tenga en cuenta que deberá cerrar Process Monitor o cualquier otra aplicación que utilice ETW o recibirá el siguiente error:
xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).
Detener el seguimiento/guardar el registro
xperf -d interrupt_trace.etl
Abra el seguimiento en
Windows Performance Analyzer
(parte del kit de herramientas de rendimiento de Windows); algunos lugares mencionan el usoxperfview
en su lugar.Expandir
Computation
->CPU Usage (Sampled)
->DPC and ISR Usage by Module, Stack
, hacer clic derecho yadd graph to analysis view
Esto apuntaba directamente al conductor en cuestión. En este caso, HDAudBus.sys está utilizando un 10,82% constante de mi CPU a través de interrupciones, que es exactamente lo que me estaba mostrando Process Explorer.
Respuesta2
Si puede manejar herramientas del sistema de bajo nivel;
Analizador de rendimiento de Windows (WPA)
Windows Performance Analyzer (WPA) es un conjunto de herramientas de monitoreo del rendimiento que se utilizan para producir perfiles de rendimiento detallados de los sistemas operativos y aplicaciones de Microsoft Windows.
Después de aprender a utilizar xperf; verificar;
La acción DPC/ISR produce un informe de texto que resume las diversas métricas relacionadas con DPC e ISR. El uso de esta acción es:
Copiar código -a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2 ]
Opción
Descripción
dpc
Mostrar estadísticas solo para DPC
isr
Mostrar estadísticas solo para ISR
resumen
Mostrar informe resumido
intervalo [dt]
Mostrar informe de uso para intervalos de dt, el valor predeterminado es 1 segundo
cubo [dt]
Muestra histograma para intervalos de dt, el valor predeterminado es 2 segundos
rango T1 T2
Mostrar retrasos entre T1 y T2
If no data type is specified, default is to show report for both DPC
e ISR. Si no se especifica ningún tipo de informe, el valor predeterminado es imprimir los tres tipos de informe.
Respuesta3
Aquí está el mejor artículo que he encontrado sobre cómo hacer esto, con tutoriales, capturas de pantalla y enlaces de descarga a las herramientas relevantes:
http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/
Respuesta4
Dos grandes herramientas sonLatenciaMonyComprobador de latencia DPC.