Does my computer have 1 or 2 CPUs? (cpuinfo and lscpu differ)
This is consistent with having a single processor containing a single core which contains two execution threads through hyperthreading. Thus you have two logical processors, but they share most of their resources (instruction decoding, arithmetic, etc.). This allows some parallelism — one thread can progress while the other one is blocked (e.g. waiting for a memory access) while keeping the hardware cost down (fewer components than two independent cores).
Look at the rest of the output from lscpu
and the content of /proc/cpuinfo
. See So what are logical cpu cores (as opposed to physical cpu cores)? for an example.
Related videos on Youtube
IQAndreas
SOreadytohelp Developer with multiple languages under my belt; primarily ActionScript 3, but also includes PHP, Java, and JavaScript. Just to be clear, I hate JavaScript: it's weakly typed, and its inheritance system is a joke. PHP isn't big on my list either. Yet, since the web uses them, I'm forced to work in them. IQAndreas.com - Main Website blog.iqandreas.com - Programming Blog GitHub.com/IQAndreas - GitHub Account and Repositories @IQAndreas - Twitter
Updated on September 18, 2022Comments
-
IQAndreas over 1 year
When I run
cat /proc/cpuinfo
I get the following output (only the relevant line included):cpu cores: 1
However,
lscpu
gives me the following output:CPU(s): 2
Which of the two is correct, and more importantly, why are they giving me different results?
The full output of
cat /proc/cpuinfo
is: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:
The full output of
lscpu
is: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
(This can also be viewed at https://gist.github.com/IQAndreas/f3f9139b8968987d3716.)
-
David over 9 yearsReally it's only the out-of-order execution core that is shared in a processor with hyperthreading. Each virtual CPU has instruction decoding.