web-dev-qa-db-fra.com

Comment savoir ce qui cause les interruptions sur Windows?

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?

39
jlupolt

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

  1. 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.

    Windows Performance Recorder

    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).

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

    xperf -d interrupt_trace.etl
    
  3. Ouvrez la trace dans Windows Performance Analyzer (Partie de Windows Performance Toolkit); certains endroits mentionnent l'utilisation de xperfview à la place.

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

    Windows Performance Analyzer

  5. 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.

45
Dave Andersen

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

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.

4
RandomNickName42

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/

3
Syclone0044

Deux excellents outils sont LatencyMon et DPC Latency Checker .

1
ron

Jetez un œil à l'Explorateur de processus Windows:

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

Cela devrait aider.

0
davey