Lorsque j'exécute cat /proc/cpuinfo
j'obtiens le résultat suivant (seule la ligne pertinente est incluse):
cpu cores: 1
Cependant, lscpu
me donne le résultat suivant:
CPU(s): 2
Lequel des deux est correct et, plus important encore, pourquoi me donnent-ils des résultats différents?
La sortie complète de cat /proc/cpuinfo
est:
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 3
model name : Intel(R) Pentium(R) 4 CPU 2.80GHz
stepping : 4
microcode : 0xe
cpu MHz : 2800.135
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
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 constant_tsc pebs bts pni dtes64 monitor ds_cpl cid xtpr
bogomips : 5600.27
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 32 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 15
model : 3
model name : Intel(R) Pentium(R) 4 CPU 2.80GHz
stepping : 4
microcode : 0xe
cpu MHz : 2800.135
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
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 constant_tsc pebs bts pni dtes64 monitor ds_cpl cid xtpr
bogomips : 5600.27
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 32 bits virtual
power management:
La sortie complète de lscpu
est:
Architecture: i686
CPU op-mode(s): 32-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 15
Model: 3
Stepping: 4
CPU MHz: 2800.135
BogoMIPS: 5600.27
L1d cache: 16K
L2 cache: 1024K
(Ceci peut également être visionné sur https://Gist.github.com/IQAndreas/f3f9139b8968987d3716 .)
Cela est cohérent avec le fait d'avoir un seul processeur contenant un seul cœur contenant deux threads d'exécution via hyperthreading . Vous avez donc deux processeurs logiques, mais ils partagent la plupart de leurs ressources (décodage des instructions, calcul, etc.). Cela permet un peu de parallélisme: un thread peut progresser pendant que l’autre est bloqué (par exemple, en attente d’un accès à la mémoire) tout en maintenant le coût matériel (moins de composants que deux cœurs indépendants).
Examinez le reste de la sortie de lscpu
et le contenu de /proc/cpuinfo
. Voir Que sont donc les cœurs de processeur logique (par opposition aux cœurs de processeur physique)? pour un exemple.