Parfois, je rencontre des serveurs (Windows 2003 et 2008) avec un temps d'interruption de processeur élevé. Existe-t-il un moyen de voir quel programme ou périphérique provoque les interruptions?
Après avoir fouillé dans la documentation (basée sur les autres réponses ici), voici le processus que j'ai fini par utiliser:
Capturez le journal ETW du problème
La façon la plus simple de procéder consiste à utiliser Windows Performance Recorder . Je ne sais pas quand il est apparu pour la première fois, mais semble être intégré aux versions récentes de Windows. Définissez le profil sur CPU usage
.
ou, à l'aide d'une invite de commande élevée, accédez au dossier qui la contient et utilisez l'outil de ligne de commande xperf:
xperf -on base+interrupt+dpc
Remarque, vous devrez fermer Process Monitor ou toute autre application qui utilise ETW ou vous obtiendrez l'erreur suivante: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).
Arrêter le traçage/enregistrer le journal
xperf -d interrupt_trace.etl
Ouvrez la trace dans Windows Performance Analyzer
(Partie de Windows Performance Toolkit); certains endroits mentionnent l'utilisation de xperfview
à la place.
Développez Computation
-> CPU Usage (Sampled)
-> DPC and ISR Usage by Module, Stack
, Faites un clic droit et add graph to analysis view
Cela indiquait le conducteur en question. Dans ce cas, HDAudBus.sys utilise 10,82% constant de mon processeur via des interruptions, ce qui est exactement ce que Process Explorer me montrait.
Si vous pouvez gérer des outils système de bas niveau;
Analyseur de performances Windows (WPA)
Windows Performance Analyzer (WPA) est un ensemble d'outils de surveillance des performances utilisés pour produire des profils de performances approfondis des systèmes d'exploitation et des applications Microsoft Windows.
Après avoir appris à utiliser xperf; check-out;
L'action DPC/ISR produit un rapport texte qui résume les diverses mesures concernant les DPC et les ISR. L'utilisation de cette action est:
Copier le code -a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2]
Option
La description
dpc
Afficher les statistiques pour DPC uniquement
isr
Afficher les statistiques pour ISR uniquement
sommaire
Afficher le rapport de synthèse
intervalle [dt]
Afficher le rapport d'utilisation pour les intervalles de dt, la valeur par défaut est 1 seconde
compartiment [dt]
Afficher l'histogramme pour les intervalles de dt, la valeur par défaut est de 2 secondes
gamme T1 T2
Afficher les retards entre T1 et T2
If no data type is specified, default is to show report for both DPC
et ISR. Si aucun type de rapport n'est spécifié, la valeur par défaut consiste à imprimer les trois types de rapport.
Voici le meilleur article que j'ai trouvé sur la façon de procéder, avec des didacticiels, des captures d'écran et des liens de téléchargement vers les outils pertinents:
http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/
Deux excellents outils sont LatencyMon et DPC Latency Checker .
Jetez un œil à l'Explorateur de processus Windows:
http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx
Cela devrait aider.