System 1: Notebook
Detect the installed CPU:
$ cat /proc/cpuinfo | grep "model name" | head -1 model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz - no. of Cores 2
- no. of Threads 4
Detect Cores and Threads:
$ sudo dmidecode -t processor | grep -E '(Core Count|Thread Count)' Core Count: 2 Thread Count: 4 Conclusion: The core count and thread count fits with the datasheet.
System 2: Desktop PC
Detect the installed CPU:
$ cat /proc/cpuinfo | grep "model name" | head -1 model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz - no. of Cores 4
- no. of Threads 8
Detect Cores and Threads:
$ sudo dmidecode -t processor | grep -E '(Core Count|Thread Count)' Core Count: 4 Thread Count: 2 Conclusion: The core count and thread count does not fit with the datasheet.
Questions
- How to read the Intel datasheets and the output of
dmidecode? - How many cores do I have?
- How many thread is each core having?
- How many thread is the whole system having?
[Edit] Update 1
Desktop PC
$ lscpu | grep -i -E "^CPU\(s\):|core|socket" CPU(s): 8 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 Reading from bottom to top:
- I have 1 socket with 4 cors, each with 2 threads => 8 threads on total (CPUs)
Conclusion: The core count and thread count fits with the datasheet.
Notebook
$lscpu | grep -i -E "^CPU\(s\):|core|socket" CPU(s): 4 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 Reading from bottom to top:
- I have 1 socket with 2 cors, each with 2 threads => 4 threads in total (CPUs)
Conclusion: The core count and thread count fits with the datasheet.
[EDIT] Update 2
$ sudo dmidecode -t processor # dmidecode 2.12 SMBIOS 2.7 present. Handle 0x0041, DMI type 4, 42 bytes Processor Information Socket Designation: SOCKET 0 Type: Central Processor Family: Core i7 Manufacturer: Intel ID: C3 06 03 00 FF FB EB BF Signature: Type 0, Family 6, Model 60, Stepping 3 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) CMOV (Conditional move instruction supported) PAT (Page attribute table) PSE-36 (36-bit page size extension) CLFSH (CLFLUSH instruction supported) DS (Debug store) ACPI (ACPI supported) MMX (MMX technology supported) FXSR (FXSAVE and FXSTOR instructions supported) SSE (Streaming SIMD extensions) SSE2 (Streaming SIMD extensions 2) SS (Self-snoop) HTT (Multi-threading) TM (Thermal monitor supported) PBE (Pending break enabled) Version: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz Voltage: 1.1 V External Clock: 100 MHz Max Speed: 7000 MHz Current Speed: 3700 MHz Status: Populated, Enabled Upgrade: Other L1 Cache Handle: 0x0004 L2 Cache Handle: 0x0005 L3 Cache Handle: 0x0006 Serial Number: Not Specified Asset Tag: Fill By OEM Part Number: Fill By OEM Core Count: 4 Core Enabled: 1 Thread Count: 2 Characteristics: 64-bit capable
dmidecodebefore today :/dmidecodeoutput (no grep) from the host where the mismatch occurs? Maybe there's something in there that explains it.lscpu | grep -i -E "^CPU\(s\):|core|socket"to detect the sockets/cores/threads, which works well (See my Update 1)lscpu, is seems thatdmidecodeis broken.