GNU/Linux >> Tutoriels Linux >  >> Linux

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

Pour obtenir une image complète, vous devez examiner le nombre de threads par cœur, de cœurs par socket et de sockets. Si vous multipliez ces nombres, vous obtiendrez le nombre de processeurs sur votre système.

CPU =Threads par cœur X cœurs par socket X sockets

Les processeurs sont ce que vous voyez lorsque vous exécutez htop (cela n'équivaut pas à des processeurs physiques).

Voici un exemple sur une machine de bureau :

$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s):                8
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1

Et un serveur :

$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s):                32
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2

La sortie de nproc correspond au nombre de CPU à partir de lscpu . Pour la machine de bureau ci-dessus, cela doit correspondre aux 8 processeurs signalés par lscpu :

$ nproc --all
8

La sortie de /proc/cpuinfo doit correspondre à ces informations, par exemple sur le système de bureau ci-dessus, nous pouvons voir qu'il y a 8 processeurs (CPU) et 4 cœurs (ID de cœur 0-3) :

$ grep -E 'processor|core id' /proc/cpuinfo
processor   : 0
core id     : 0
processor   : 1
core id     : 0
processor   : 2
core id     : 1
processor   : 3
core id     : 1
processor   : 4
core id     : 2
processor   : 5
core id     : 2
processor   : 6
core id     : 3
processor   : 7
core id     : 3

Le cpu cores rapporté par /proc/cpuinfo correspond au Core(s) per socket rapporté par lscpu . Pour la machine de bureau ci-dessus, cela doit correspondre aux 4 cœurs par socket signalés par lscpu :

$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores   : 4

Pour répondre précisément à votre question, indiquez le nombre de cœurs dont vous disposez en multipliant le nombre de cœurs que vous avez par socket par le nombre de sockets dont vous disposez.

Cœurs =Cœurs par socket X Sockets

Pour les exemples de systèmes ci-dessus, le bureau a 4 cœurs :

$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4

Alors que le serveur en a 16 :

$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16

Un autre utilitaire utile est dmidecode qui génère des informations par socket. Dans le cas du système de serveur répertorié ci-dessus, nous nous attendons à voir 8 cœurs par socket et 16 threads par socket :

$ sudo dmidecode -t 4 | grep -E 'Socket Designation|Count'
    Socket Designation: CPU1
    Core Count: 8
    Thread Count: 16
    Socket Designation: CPU2
    Core Count: 8
    Thread Count: 16

Le lscpu La commande a un certain nombre d'options utiles que vous voudrez peut-être consulter, par exemple :

$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'

Voir man lscpu pour plus de détails.

En résumé :

  • Vous devez connaître les sockets, les cœurs et les threads
  • Vous devez faire attention au terme CPU car il signifie différentes choses dans différents contextes

Vous devez regarder les sockets et les cœurs par socket. Dans ce cas, vous avez 1 CPU physique (socket) qui a 4 cœurs (cœurs par socket).


Vous pouvez obtenir ces informations par nproc(1) commande

$ nproc --all
12

Il ne nécessite pas de privilèges root.


Linux
  1. Comment configurer la virtualisation sur Redhat Linux

  2. Comment augmenter le nombre d'inodes de disque sous Linux

  3. Comment définir ou modifier le nom d'hôte du système sous Linux

  4. comment connaître le numéro d'interruption/GPIO pour une broche spécifique sous Linux

  5. Sous Linux, comment savoir combien de cœurs de la machine sont actifs ?

Comment défragmenter votre système Linux

Comment trouver le nombre de cœurs de processeur à partir de la ligne de commande sous Linux

Comment obtenir le nombre de processeurs/cœurs sous Linux

Comment savoir si votre système possède un port USB 3.0 sous Linux [Astuce rapide]

Comment envoyer un ping à un numéro de port sous Linux

Comment répertorier les services sous Linux