Comment savoir quelle est la cause des interruptions sous Windows?

37

Je rencontre parfois des serveurs (Windows 2003 et 2008) avec un temps d'interruption élevé du processeur. Existe-t-il un moyen de voir quel programme ou quel périphérique est à l'origine des interruptions?

jlupolt
la source

Réponses:

41

Après avoir fouillé dans la documentation (basée sur les autres réponses ici), voici le processus que j'ai finalement utilisé:

  1. Capturer le journal ETW du problème

    Pour ce faire, le moyen le plus simple consiste à utiliser Windows Performance Recorder . Je ne suis pas sûr de sa date d'apparition, mais semble être intégré aux versions récentes de Windows. Définissez le profil sur CPU usage.

    Enregistreur de performances Windows

    ou, à l'aide d'une invite de commande avec privilèges élevés, accédez au dossier qui les contient et utilisez l'outil de ligne de commande xperf:

    xperf -on base+interrupt+dpc
    

    Notez que vous devrez fermer Process Monitor ou toute autre application utilisant ETW ou vous obtiendrez l'erreur suivante: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).

  2. Arrêter le traçage / sauvegarder le journal

    xperf -d interrupt_trace.etl
    
  3. Ouvrez la trace dans Windows Performance Analyzer(partie de Windows Performance Toolkit); certains endroits mentionnent utiliser à la xperfviewplace.

  4. Développez Computation-> CPU Usage (Sampled)-> DPC and ISR Usage by Module, Stack, faites un clic droit etadd graph to analysis view

    Analyseur de performances Windows

  5. Cela a indiqué directement au conducteur en question. Dans ce cas, HDAudBus.sys utilise une quantité constante de 10,82% de mon processeur via des interruptions, ce qui est exactement ce que Process Explorer me montrait.

Dave Andersen
la source
Joli! Très bien fait.
Michal Sokolowski
Bien expliqué. Dans mon cas, il s'est avéré être audiodg.exe. Dès que je l'ai tué, les DPC ne sont presque plus rien. J'ai trouvé des détails supplémentaires sur la façon de résoudre ce problème ici: windows-exe-errors.com/…
CJBS
Une correction - vous devez développer Calcul-> Utilisation du processeur (échantillonné) - "Utilisation du processeur" est ambiguë.
Bruce Dawson
Dans mon cas, j'avais 10% de DPC dans le gestionnaire de tâches, mais la plupart d'entre eux étaient ntoskrnl.exe dans la trace. Cependant, l’extension de la pile de ce module a révélé un service tiers, "RfeCo10X64.sys", faisant partie de Killer Performance Suite. J'ai désinstallé ce logiciel (un système de hiérarchisation du réseau qui faisait l'inverse de sa tentative) et mon problème a été résolu.
Chris
Est-ce que ça marche sous Windows 10? Y a-t-il d'autres outils disponibles? Je ne veux pas installer les fichiers GiB de l'ensemble.
Unknown123
4

Si vous pouvez gérer des outils système de bas niveau;

Analyseur de performances Windows (WPA)

WPA (Windows Performance Analyzer) est un ensemble d'outils de surveillance des performances permettant de générer des profils de performances détaillés des applications et des systèmes d'exploitation Microsoft Windows.

Après avoir appris à utiliser xperf; check-out;

L'action DPC / ISR

L'action DPC / ISR génère un rapport texte résumant les différentes mesures relatives aux DPC et aux ISR. L'utilisation pour 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

seau [dt]

Afficher l'histogramme pour les intervalles de dt, la valeur par défaut est 2 secondes

gamme T1 T2

Afficher les délais 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.

RandomNickName42
la source
3

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 pertinents:

http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/

Syclone0044
la source
1
Bienvenue sur Server Fault! Généralement, nous aimons que les réponses sur le site puissent être autonomes - Les liens sont excellents, mais si ce lien se brise, la réponse devrait avoir suffisamment d’informations pour être toujours utile. Pensez à modifier votre réponse pour inclure plus de détails. Voir la FAQ pour plus d'informations.
slm
0

Jetez un coup d’œil à l’explorateur de processus Windows:

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

Cela devrait aider.

davey
la source
2
Process Explorer indique le temps passé par le processeur à la gestion des interruptions, mais il ne permet pas, autant que je sache, de déterminer la cause des interruptions.
Jlupolt