web-dev-qa-db-fra.com

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

J'exécute un processus dans un serveur Ubuntu à 4 noyaux. Cependant, la commande top 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 sont attendus, 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:

enter image description here

44
Arpssss

L'échelle utilisée par top est 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, top peut 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 indiquer à 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'utilitaire htop comme meilleure alternative top. Votre programme utilisera tous les 8 cœurs.

62
Gregory MOUSSAT