web-dev-qa-db-fra.com

Pourquoi Top montre-t-il un nombre différent de cœurs que cpuinfo?

Quand je cours haut, je montrais le CPU 0-7. Quand je fais:

cat /proc/cpuinfo | grep "cpu cores" | uniq

Je reçois:

cpu cores : 4

Si je suis grep "ID physique", j'ai 1.

Je pense que ma commande est fausse et la top a raison. Ce n'est pas un VM et c'est un serveur physique, redhat. Qu'est-ce que je fais mal?

Je ne suis pas sûr que ceux-ci y répondent:

Comment connaître le nombre de noyaux d'un système sous Linux?

Nombre de processeurs dans/proc/cpuinfo

Edit: suis-je corrigé cet identifiant physique, s'il ne montre que 1, alors j'ai une puce physique dans la carte mère?

EDIT: C'est un processeur Intel (R) Xeon (R) CPU X5560 @ 2.80GHz, mais l'ID physique est 1, et je pensais que ce serait 0, mais il n'y a pas d'identifiant physique 0 en CPuinfo.

EDIT: Si cela importe, j'essaie de trouver des licences où ils le font .5 Le compte de base.

8
johnny

Quel CPU utilisez-vous? Combien de fil présents par noyau physique?

cat /proc/cpuinfo Affiche le nombre de noyau physiques alors que top montre le nombre total de threads présents.

Je pense que votre CPU a 4 noyau physique et 2 noyau logique par noyau physique. Donc, c'est top montrant 8.

De plus, des contenus de /proc/cpuinfo est quelque peu dépendant de la mise en œuvre. Comme en enraciné Android Shell, le fichier cpuinfo ne contient aucun terme cpu cores.

Cependant, dans cpuinfo Chaque thread est nommé processor : X, Où X est le thread no. Donc, le dernier fil non est identique à celui de top/htop sortir.

Résultat de nproc --all doit également être cohérent avec top/htop

14
Abhik Bose

Le X5560 est un simple puce. Cela ressemble à ceci:

enter image description here

grep "physical id" vous indique que vous avez un processeur physique installé.

Si vous prenez l'épandeur de chaleur du haut, vous pouvez voir ceci - un seul fichier physique Die (face cachée):

enter image description here

Si vous pouviez enlever cela mourir et le retournez, cela ressemblerait à ceci:

enter image description here

Sur cette matrice physique unique, il y a quatre CPU physiques CPU Construit sur le silicium:

enter image description here

grep "cpu cores" vous dit que votre processeur comporte quatre cœurs physiques construits.

Chaque noyau est un seul processeur avec une unité à point flottante, un certain nombre d'unités d'exécution entier, une paire de piles de registre et une autre sorcière qui permet à chaque noyau d'exécuter efficacement deux flux d'instructions indépendants (fils) à la fois.

enter image description here

top vous indique que tous les processeurs et les noyaux de votre ordinateur, collectivement, peuvent exécuter huit flux de travail indépendants à la fois - il vous indique que le système d'exploitation est capable de planifier huit threads simultanés pour l'exécution à un moment donné. .

16
J...

top montre une "CPU" par processeur logique; Sur X86, c'est le produit du nombre de sockets dans le système, par le nombre de cœurs physiques par prise, par le nombre de filets par noyau.

Les cpu cores Entrée dans /proc/cpuinfo, encore une fois sur x86, montre le nombre de cœurs physiques. Pour trouver le nombre de cœurs logiques, comme utilisé dans top, vous devez regarder la valeur siblings à la place:

cat /proc/cpuinfo | grep "siblings" | uniq

Ceci est décrit en détail dans la documentation du noyau .

lscpu fournit des informations sur les CPU (s) installés (s) qui est plus facile à comprendre que /proc/cpuinfo (ou plutôt, il présente les mêmes informations de manière plus simple).

7
Stephen Kitt

Probablement, vous avez un processeur qui est un processeur "quadriocuteur" et que l'hyperthreading est activé afin que chaque noyau physique se présente au système d'exploitation (au noyau) comme deux logique Les cœurs, capables d'avoir deux threads attribués à ce même noyau physique simultanément.

Les termes essentiels pour vous assurer de bien comprendre sont les suivants: CPU ou puce physique, ou "Die" (relie la "prise"); Ensuite, noyau physique; Assurez-vous ensuite que vous avez une compréhension sur "processus" et "thread"; puis effacez "hyperthreading" et "noyau logique".

J'ai assisté à une conversation à Lisa 2017 qui a effacé tout cela très bien; Les diapositives de cette conversation sont disponibles en ligne , bien que bien sûr, ils ne vous aideront pas autant comme le discours actuel a fait ( puisque la partie parlée est manquante).

3
Wildcard

cPUInfo montrent les noyaux réels tandis que HTOP/TOP affiche à la fois des noyaux et du fil en tant que cores.Vous avez probablement 4 noyaux et 4 threads qui est pourquoi.

1
AsenM