Il m'arrive de rencontrer des serveurs (Windows 2003 et 2008) dont le pourcentage de temps d'interruption du processeur est élevé. Existe-t-il un moyen de savoir quel programme ou périphérique est à l'origine de ces interruptions ?
Réponses
Trop de publicités?Après avoir fouillé dans la documentation (sur la base des autres réponses ici), voici le processus que j'ai fini par utiliser :
-
Saisir le journal de l'ETW du problème
La manière la plus simple d'y parvenir est d'utiliser la fonction Enregistreur de performances Windows . Je ne sais pas exactement quand il est apparu pour la première fois, mais il semble qu'il soit intégré dans les versions récentes de Windows. Réglez le profil sur
CPU usage
.ou, à l'aide d'une invite de commande élevée, naviguer jusqu'au dossier qui le contient et utiliser l'outil de ligne de commande xperf :
xperf -on base+interrupt+dpc
Notez que vous devrez fermer Process Monitor ou toute autre application qui utilise ETW, sinon 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 / sauvegarder le journal
xperf -d interrupt_trace.etl
-
Ouvrir la trace dans
Windows Performance Analyzer
(qui fait partie de Windows Performance Toolkit) ; certains endroits mentionnent l'utilisation dexperfview
au lieu de cela. -
Élargir
Computation
->CPU Usage (Sampled)
->DPC and ISR Usage by Module, Stack
cliquer avec le bouton droit de la souris etadd graph to analysis view
-
Ce dernier a pointé du doigt le conducteur en question. Dans ce cas, HDAudBus.sys utilise constamment 10,82% de mon processeur via les interruptions, ce qui correspond exactement à ce que l'explorateur de processus m'indiquait.
Si vous pouvez utiliser des outils de système de bas niveau ;
Analyseur de performance Windows (WPA)
Windows Performan un ensemble d'outils de contrôle des performances utilisés pour produire des profils de performance approfondis de l'opéra et des applications.
Après avoir appris à utiliser xperf, consultez le site ;
L'action DPC/ISR produit un texte qui résume les différents métriques concernant les DPC et les ISR. L'utilisation de cette action est la suivante l'utilisation de cette action est la suivante :
C -a dpcisr [-dpc -isr -summary -intervalle [n] -bucket [n] -range T1 T2 ]
Option
Description
dpc
Afficher les statistiques pour DPC uniquement
isr
Afficher les statistiques pour les BVR uniquement
résumé
Afficher le rapport de synthèse
intervalle [dt]
Afficher le rapport d'utilisation pour les intervalles de dt, la valeur par défaut est de 1 seconde
seau [dt]
Afficher l'histogramme pour int la valeur par défaut est de 2 secondes
plage 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 n'est spécifié, l'impression des trois les trois types de rapport.
Voici le meilleur article que j'ai trouvé sur la façon de procéder, avec des tutoriels, des captures d'écran et des liens de téléchargement vers les outils appropriés :
http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/
Deux excellents outils sont LatencyMon y Vérificateur de latence DPC .