GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi top affiche-t-il un nombre de cœurs différent de cpuinfo ?

Le X5560 est une puce unique . Il ressemble à ceci :

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

Si vous retirez le dissipateur de chaleur du haut, vous pouvez voir ceci - un seul moule physique (face cachée) :

Si vous pouviez retirer ce dé et le retourner, il ressemblerait à ceci :

Sur ce seul dé physique, il y a quatre cœurs de processeur physiques construit sur le silicium :

grep "cpu cores" vous indique que votre processeur est doté de quatre cœurs physiques intégrés.

Chaque cœur est un processeur unique avec une unité à virgule flottante, un certain nombre d'unités d'exécution entières, une paire de piles de registres et une autre magie qui permet à chaque cœur d'exécuter efficacement deux flux d'instructions indépendants (threads) à la fois.

top vous indique que tous les processeurs et cœurs 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 l'exécution de huit threads simultanés à tout moment.


Quel processeur utilisez-vous ? Combien de threads présents par cœur physique ?

cat /proc/cpuinfo affiche le nombre de cœurs physiques alors que top affiche le nombre total de threads présents.

Je pense que votre CPU a 4 cœurs physiques et 2 cœurs logiques par cœur physique. Donc c'est top montrant 8.

De plus le contenu de /proc/cpuinfo dépend quelque peu de la mise en œuvre. Comme dans le shell Android enraciné, le cpuinfo le fichier ne contient aucun terme cpu cores .

Cependant en cpuinfo chaque thread est nommé processor : X , Où X est le fil non. Ainsi, le dernier numéro de thread doit être le même que top/htop sortie.

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


top affiche un "CPU" par CPU logique ; sur x86, c'est le produit du nombre de sockets dans le système, par le nombre de cœurs physiques par socket, par le nombre de threads par cœur.

Le cpu cores saisie en /proc/cpuinfo , toujours sur x86, indique le nombre de cœurs physiques. Pour trouver le nombre de cœurs logiques, tel qu'utilisé dans top , vous devriez regarder le siblings valeur à 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 le ou les processeurs installés qui sont plus faciles à comprendre que /proc/cpuinfo (ou plutôt, il présente les mêmes informations de manière plus simple).


Linux
  1. Pourquoi un Lun World Wide ID commence-t-il par le numéro 3 dans Linux dm-multipath

  2. Pourquoi uniq considère-t-il les mots identiques comme différents ?

  3. Pourquoi YaST affiche-t-il maintenant les lignes sous la forme lqqqqqqqqqqqqqqq ?

  4. Pourquoi yum updateinfo n'affiche-t-il pas toutes les mises à jour ?

  5. Pourquoi la commande free et dmidecode affichent-elles des valeurs différentes pour la RAM ?

Les 10 meilleures raisons d'utiliser Linux

Pourquoi Htop Meter affiche-t-il> 90 % alors que le tableau est à 0,0 % ?

Pourquoi rand() répète-t-il beaucoup plus souvent les nombres sous Linux que sur Mac ?

Pourquoi mon système n'affiche-t-il que 3,2 Go de RAM alors que j'ai définitivement 4,0 Go

Pourquoi le mot de passe 'sudo' est-il différent du mot de passe 'su root'

Pourquoi find -mtime ne fonctionne-t-il pas comme prévu sur des fichiers avec des fuseaux horaires différents ?