Si l'hyper threading est activé, l'utilisation du CPU affichée dans top
est l'utilisation par CPU, pas cœur. Par exemple, sur un serveur avec 24 cœurs et 2 threads par cœur (total de 48 CPU), l'utilisation peut aller jusqu'à 4800. Exécution de lscpu -p
fournissent une impression décente des cœurs et des processeurs :
$ lscpu -p
# The following is the parsable format, which can be fed to other
# programs. Each different item in every column has an unique ID
# starting from zero.
# CPU,Core,Socket,Node,,L1d,L1i,L2,L3
0,0,0,0,,0,0,0,0
1,1,0,0,,1,1,1,0
...
...
...
46,22,1,1,,22,22,22,1
47,23,1,1,,23,23,23,1
J'ai effectué les étapes suivantes pour vérifier la réponse ci-dessus :
-
Sur le serveur, j'ai lancé cette boucle :
$ while true; do x="reee";x="asdasd";z="asdasdasd;"; done
-
Sur un autre fil de discussion, j'ai lancé top
et vérifié que bash utilise environ 100% du processeur :
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14791 hpaknia 20 0 129156 5188 1856 R 99.7 0.0 28:08.54 bash
-
Ensuite, dans le même terminal du haut, j'ai appuyé sur 1
pour voir l'utilisation par CPU. Seul le thread 3 du CPU sur 48 utilise 100% du CPU :
%Cpu3 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
Dans mon cas, chaque cœur a 2 threads CPU. Si top
Le pourcentage a montré l'utilisation par cœur, la valeur devait être de 50% mais ce n'est pas le cas. Parce que top
montre l'utilisation des threads par CPU.