Pourquoi la commande «top» indique-t-elle une utilisation du processeur de 799%?

47

J'exécute un processus dans un serveur Ubuntu à 4 noyaux. Cependant, la topcommande indique que l'utilisation du processeur est de 799% tout le temps.

Comment cela est-il possible? Je sais que pour les processeurs multicœurs, plus de 100% d'utilisation du processeur est attendu, mais 799% est une valeur très élevée.

Quelqu'un peut-il m'expliquer pourquoi et quand cela pourrait arriver?

Modifier:

Selon les suggestions de Gregory MOUSSAT, en utilisant htop, je me suis mis à suivre:

entrez la description de l'image ici

Arpssss
la source
1
Les 4 cœurs ont-ils chacun 2 fils (par exemple, Intel Core i7)?
Renan
@ Renan, je l'exécute sur un seul thread.
Arpssss
Alors ok. Parce que j'ai vu cela se produire sur certains systèmes i7.
Renan
1
Mais la JVM est -elle mono-threadée?
Ignacio Vazquez-Abrams
6
Cela ressemble vraiment à un i7 entièrement chargé, je l’obtiens généralement lors du codage vidéo
nohillside

Réponses:

65

L'échelle utilisée topest de 100% lorsqu'un noyau est pleinement utilisé. Ou lorsqu'un noyau représente 20% et un second 80%. Cela conduit à des résultats étranges sur les ordinateurs multicœurs car il peut facilement dépasser 100%.
Si vous avez 8 cœurs, vous toppouvez afficher de 0% (système inactif) à 800% (puissance maximale).

Votre programme utilise simplement vos 4 cœurs avec hyperthreading (donc 8 cœurs virtuels) à leur capacité maximale. Donc top vous donne presque 8 x 100% = 800%.

Vous ne pouvez pas explicitement dire à la machine virtuelle d'utiliser un seul thread, elle utilisera plusieurs threads pour effectuer son travail, même si vous n'utilisez qu'un seul thread dans votre application.

Vous pouvez utiliser l' htoputilitaire comme une meilleure topalternative. Votre programme utilisera tous les 8 cœurs.

Grégory MOUSSAT
la source
Vous pouvez limiter n'importe quel ensemble de processus à un ensemble de cœurs ou limiter le% de l'unité centrale. Cependant, je ne me souviens pas des commandes. (l'un est cpulimit)
ctrl-alt-delor
+1 pour htop, bien meilleur qu'en haut ou en haut
CodeLikeBeaker
+1 pour htop. Cela m'a aidé à clouer deux threads gourmands en CPU!
Arun
3
htop
Je vous