1 votes

Compteurs d'utilisation du CPU de Perfmon

J'essaie de surveiller une installation et les processus qui utilisent le plus le processeur, pour voir si je ne lui impose pas une charge trop importante.

Actuellement, je surveille l'installation avec perfmon en utilisant les compteurs

  • \Processor(_Total)\% Processor Time (utilisation globale)
  • \Process(*)\% Processor Time (utilisation par processus).

Ce qui m'ennuie, c'est que, lorsque j'envoie les journaux au format CSV,

  • \Processor(_Total)\% Processor Time != Process(_Total)\% Processor Time
  • \Process(_Total)\% Processor Time != la somme de \Process(x)\% Processor Time pour tous les processus en cours ( x )

Un rapide graphique de comparaison réalisé avec Excel : A quick comparison graph made with Excel

Qu'est-ce que je fais de mal ?

2voto

Jamie Hanrahan Points 22184

L'écart entre le temps total du processeur ( \Processor (_Total)\% Processor Time ) utilisé et le total du temps CPU des processus ( Process(_Total)\% Processor Time \Process (_Total)\% Processor Time ) est probablement dû au temps passé à un IRQL élevé. Cela apparaît dans PerfMon comme "% Interrupt time" et "% DPC time".

Le temps d'interruption est le temps passé dans les routines de service d'interruption ou sérialisé avec elles ; ce code s'exécute à IRQL 3 et plus. Le temps de DPC est le temps passé dans les "routines DPC", ou dans le code sérialisé avec elles ; ce code s'exécute à l'IRQL 2. Les routines DPC sont principalement utilisées pour gérer le travail déclenché par une interruption mais qui ne doit pas nécessairement être effectué dans le même contexte de sérialisation que l'ISR.

La divergence existe parce que le temps CPU passé au niveau DPC ou supérieur est inclus dans le temps total du processeur, mais pas dans le temps CPU d'un thread ou d'un processus. En effet, ce code n'est pas nécessairement associé aux activités du thread actuel, et il n'y a donc aucun intérêt à "facturer" ce temps au thread actuel.

La légère différence entre \Process (_Total)\% Temps processeur et la somme de \Process (x)\% Processor Time pour tous les processus en cours est probablement dû à des problèmes de collecte de données dans PerfMon. Vous voyez, il n'y a pas d'objet de processus appelé "_Total" et aucun ensemble de compteurs d'utilisation du CPU pour aller avec ce concept. PerfMon calcule ce total en additionnant simplement les temps CPU de chaque processus existant au moment de la collecte. De même, le pourcentage de temps CPU de tous les processus n'est pas collecté au même instant. Il est donc possible que de légers "glissements" se produisent entre le total observé par PerfMon et le total que vous obtiendrez en additionnant tous les compteurs que vous voyez à l'écran.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X