Confus par les valeurs du processeur dans la commande «top» d'Unix

11

Dans la capture d'écran ci-dessous, le processeur global est signalé comme 3% mais le processus mysqld utilise 57%. S'agit-il de 57% des 3% globaux et donc mysqld n'utilise qu'environ 1,5% du CPU?

capture d'écran supérieure http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

MISE À JOUR : Un commentateur ci-dessous m'a demandé d'appuyer sur la touche «1» et de publier les résultats: la touche 1 http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

Teflon Ted
la source

Réponses:

11

Le 57,6% signifie que mysqld utilise .576 d'un processeur. L'écart est probablement une condition de concurrence entre la collecte de données pour le système dans son ensemble et la collecte des données par processus.

EDIT: Sur la base de votre mise à jour, vous semblez avoir 16 cœurs.

57.5% => .575/16 = .036 = 3.6%.

C'est de là que viennent vos 3%.

Si vous additionnez tous les pourcentages d'inactivité et soustrayez de 1600%, cela équivaut également à environ 57,5%.

brian-brésil
la source
3

Pouvez-vous essayer d'appuyer sur le chiffre 1 lorsque le haut est en marche et voir ce qui se passe.

Éditer:

Mr Unknown le dit bien.

top dit "Si vous aviez un cœur de processeur, il serait occupé à 57,5%."

Mais vous avez 16 cœurs. Donc, ce nombre 57 est réparti partout, avec mysqld étant multi-thread et tout ...

Un peu déroutant. Mais je pense que c'est parce que top aurait plus de mal à afficher des informations pour chaque core ... imaginez une top info avec 16 coeurs ou plus!

Aussi, si vous additionnez tout le temps CPU "% us"

1.7+1.0+2.3+1.0+7.4+11.1+15.1+8.7 = 48.3
48.3/16 = 3.01875

C'est de là que vient le chiffre de 3% ...

Pas maintenant
la source
terminé; voir la question mise à jour.
Teflon Ted
1

Quelqu'un a-t-il recommandé htop? Non pas que cela aiderait cette question en particulier plus que les réponses précédentes, mais je me sens obligé de mentionner htopchaque fois que je vois quelqu'un utiliser encore top!

user14018
la source
0

Je ne peux pas dire si votre top fusionne plusieurs processeurs que vous avez, mais cela n'aurait toujours pas beaucoup de sens.

Ce qui pourrait arriver, c'est que top n'obtient pas les valeurs pour chaque processus et l'utilisation totale du CPU en même temps. Il y a un petit laps de temps où mysql peut avoir arrêté ou commencé à utiliser beaucoup de CPU entre le moment où les informations de processus sont lues et le global est lu. Cela pourrait bien être une simple condition de course.

Bien sûr, cela aurait dû se produire assez longtemps pour que vous l'ayez remarqué, donc je suppose que cela pourrait simplement être un bug étrange quelque part en haut ou dans la comptabilité du noyau.

David Pashley
la source
0

nous: espace utilisateur - ce que vous exécutez au-dessus du noyau sy: appels système - ce qui s'exécute à l'intérieur du noyau ni: processus reniced id: idle wa: en attente d'e / s hi: interruptions matérielles - combien de temps est consacré au traitement du matériel si: interruptions logicielles - combien de temps est consacré au traitement des interruptions créées par logiciel (appels système, etc.)

Ric
la source