Connaître le nombre de cœurs disponibles sous Linux

Connaître le nombre de cœurs disponibles sous LinuxDe nombreux logiciels qui s’exécutent sur Linux fonctionnent en mode multi-threads. Il est bon de connaître le nombre de cœurs logiques que possède votre système Linux pour ajuster le nombre de threads au nombre de cœurs ! Vous disposez, pour cela, de trois commandes :

lscpu -p|grep -v "#"|wc -l
lscpu -p|grep -cv "#" #Idem à la précédente, par Adrien.D
cat /proc/cpuinfo | grep processor|wc -l
grep -c processor /proc/cpuinfo #Idem à la précédente par Adrien.D
dmesg|grep BogoMIPS

Si vous avez en stock d’autres commandes, je suis preneur !

Linux  / CPU 

Commentaires

La première commande on peut la simplifier :
lscpu -p|grep -cv « # »

Et la deuxième on peut la ULTRA-Simplifier :
grep -c processor /proc/cpuinfo

:)

@Adrien.D

T’as raison. J’ai la manie d’utiliser cat et wc, là où elles ne sont pas utiles.

Sauf que non …

Sur mon XEON, les différentes commandes indiquent 8 coeurs, sauf que je n’en ai que 4. Pourquoi ? Parce que les différentes commandes comptent le nombre de threads, et non les coeurs. Et donc, on se retrouve sur certaines machines à 2x plus de threads que la réalité, « grâce » à l’hyperthreading des processeurs.

la commande qui me retourne la bonne valeur sur mon serveur va être :

lscpu -p | grep -v « # » | awk -F ‘,’ ‘{print $2’} | sort -u | wc -l

Sinon, la commande lscpu -y envoit des informations intéressantes :

$ lscpu -y
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz
Stepping: 3
CPU MHz: 3766.271
CPU max MHz: 3800.0000
CPU min MHz: 800.0000
BogoMIPS: 6799.79
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1g b rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_t sc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xs ave avx f16c rdrand lahf_lm abm invpcid_single kaiser tpr_shadow vnmi flexpriori ty ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveop t dtherm ida arat pln pts

La ligne Core per socket est intéressante aussi et donne la valeur attendue.

@Oupsman

Il s’agit des cœurs logiques. 4×2=8

Laisser un commentaire

(requis)

(requis)