J'ai une machine avec Intel(R) Xeon(R) CPU E5520
visible comme 16 cœurs logiques (8 avec HT). Si j'exécute quelque chose pour manger du temps CPU (simple thread), le top signale correctement 100% d'utilisation du CPU pour le processus, mais seulement environ 3-4% d'utilisation totale.
Cpu(s): 3.6%us, 0.0%sy, 0.0%ni, 96.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.1%st
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1567 www 20 0 65632 84 4 R 100 0.0 0:05.96 burnMMX
Certes, l'utilisation signalée devrait être d'environ 6,25% (1 des 16 cœurs).
- Est-ce incorrect parce que c'est une machine virtuelle?
- Comment puis-je calculer une valeur correcte?
atop
changer le haut pour signaler l'utilisation de chaque CPU individuellement (en appuyant sur1
)Réponses:
top
dans le rapport récapitulatif de l'utilisation par rapport au CPU avec tous les cœurs ajoutés. D'un autre côté, lorsque vous regardez dans la liste des processus, les meilleurs rapports indiquent le pourcentage référencé à un cœur (réel ou HT). Essayez d'exécuter un processus avec 4 threads pouvant consommer jusqu'à 4 cœurs de CPU, vous le trouverez en utilisant 400% de CPU.Je ne peux pas dire pourquoi, mais c'est ainsi que cela
top
fonctionne sur tous les systèmes Linux que j'ai vus.la source
Fonctionne le plus souvent
top
en mode 'Irix' par défaut, comme vous le décrivez. Si vous souhaitez obtenir un pourcentage des capacités totales du processeur (c'est-à-dire lorsque la somme de l'utilisation possible du processeur atteint 100% et non cpu_cores_number * 100%), basculez simplement le mode 'Irix' en appuyant surI
.la source