Comment un compteur Perfmon «% Processor Time» peut-il être supérieur à 100%?

9

Le compteur Process(sqlservr)\% Processor Time,, oscille autour de 300% sur l'un de mes serveurs de base de données. Ce compteur reflète le pourcentage du temps total passé par SQL Server à s'exécuter sur le processeur (mode utilisateur + mode privilège). Le livre, Sql Server 2008 Internals and Troubleshooting , dit que tout ce qui dépasse 80% est un problème.

Comment est-il possible que ce compteur soit supérieur à 100%?

Bill Paetzke
la source

Réponses:

21

Il existe deux compteurs du même nom:

Process\% Processor Time: La somme du temps processeur sur chaque processeur

Processor(_Total)\% Processor Time: Le total pour tous les processeurs

Votre question indique que vous utilisez le premier compteur, ce qui signifie que sa valeur maximale est de 100% * (pas de CPU).

Donc, si vous avez 4 CPU, le maximum total est de 400%, et 80% est en fait (400 * 0,8 =) 320% (et pour 8 CPU c'est 640%, etc etc)

Mark Henderson
la source
Oui! C'est ça. J'ai 8 processeurs. Donc, mon utilisation totale du processeur sqlservr est en fait d'environ 37%. Et cela signifie que tout est normal. Merci, @Farseeker!
Bill Paetzke
À tout moment. J'ai eu des requêtes similaires lorsque j'ai commencé à utiliser perfmon sur des systèmes à plusieurs processeurs.
Mark Henderson
2
Le nombre de processeurs inclut-il l'hyperthreading? Par exemple, si mon ordinateur est quad core et que j'ai de l'hyperthreading, dois-je prendre en compte 4 procs ou 8?
Matthew Rodatus
1
Existe-t-il un moyen de trouver l'utilisation du processeur d'un seul processus avec une valeur comprise entre 0 et 100% (alias: il vous montre la charge répartie sur tous les CPU)? Je préfère ne pas faire la division moi
Jeroen Vannevel
0

Cette valeur est calculée sur la ligne de base de (No of Logical CPUS * 100), donc cela va être calculé sur une base de plus de 100.

Mahesh kumar Chiliveri
la source