Sometimes, you need to know the hardware layout for interrupt handling assignment, memory access, etc.
You can use dmidecode along cat /proc/XXX commands for find out the hardware layout.
http://www.thegeekstuff.com/2008/11/how-to-get-hardware-information-on-linux-using-dmidecode-command/ give a good descriptions about demidecode:
"dmidecode command reads the system DMI table to display hardware and BIOS information of the server. Apart from getting current configuration of the system, you can also get information about maximum supported configuration of the system using dmidecode. For example, dmidecode gives both the current RAM on the system and the maximum RAM supported by the system."
Here I will show an example how to decide the cpu threads and the layout:
[root@sc14ia06 nopermgen]# dmidecode -t 4
# dmidecode 2.10
SMBIOS 2.6 present.
Handle 0x0004, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU 1
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: D2 06 02 00 FF FB EB BF
Signature: Type 0, Family 6, Model 45, Stepping 2
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 (Fast floating-point save and restore)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Hyper-threading technology)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Genuine Intel(R) CPU @ 2.30GHz
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 2300 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0005
L2 Cache Handle: 0x0006
L3 Cache Handle: 0x0007
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 8
Core Enabled: 8
Thread Count: 16
Characteristics:
64-bit capable
Handle 0x0008, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU 2
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: D2 06 02 00 FF FB EB BF
Signature: Type 0, Family 6, Model 45, Stepping 2
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 (Fast floating-point save and restore)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Hyper-threading technology)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Genuine Intel(R) CPU @ 2.30GHz
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 2300 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0009
L2 Cache Handle: 0x000A
L3 Cache Handle: 0x000B
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 8
Core Enabled: 8
Thread Count: 16
Characteristics:
64-bit capable
It shows 2-socket cpu, 8-core per socket, and hyper threading enabled(core count:8, thread count: 16)
cat /proc/cpuinfo |egrep 'processor|physical id|core id'
processor : 0
physical id : 0
core id : 0
processor : 1
physical id : 0
core id : 1
processor : 2
physical id : 0
core id : 2
processor : 3
physical id : 0
core id : 3
processor : 4
physical id : 0
core id : 4
processor : 5
physical id : 0
core id : 5
processor : 6
physical id : 0
core id : 6
processor : 7
physical id : 0
core id : 7
processor : 8
physical id : 1
core id : 0
processor : 9
physical id : 1
core id : 1
processor : 10
physical id : 1
core id : 2
processor : 11
physical id : 1
core id : 3
processor : 12
physical id : 1
core id : 4
processor : 13
physical id : 1
core id : 5
processor : 14
physical id : 1
core id : 6
processor : 15
physical id : 1
core id : 7
processor : 16
physical id : 0
core id : 0
processor : 17
physical id : 0
core id : 1
processor : 18
physical id : 0
core id : 2
processor : 19
physical id : 0
core id : 3
processor : 20
physical id : 0
core id : 4
processor : 21
physical id : 0
core id : 5
processor : 22
physical id : 0
core id : 6
processor : 23
physical id : 0
core id : 7
processor : 24
physical id : 1
core id : 0
processor : 25
physical id : 1
core id : 1
processor : 26
physical id : 1
core id : 2
processor : 27
physical id : 1
core id : 3
processor : 28
physical id : 1
core id : 4
processor : 29
physical id : 1
core id : 5
processor : 30
physical id : 1
core id : 6
processor : 31
physical id : 1
core id : 7
This shows there are 32 logic processors.
core id: the processor id
physical id: the socket id
core id: the core id
To put in a picture, the processor mapping is:
Another way to get this information is:
cd /sys/devices/system/cpu
You can use dmidecode along cat /proc/XXX commands for find out the hardware layout.
http://www.thegeekstuff.com/2008/11/how-to-get-hardware-information-on-linux-using-dmidecode-command/ give a good descriptions about demidecode:
"dmidecode command reads the system DMI table to display hardware and BIOS information of the server. Apart from getting current configuration of the system, you can also get information about maximum supported configuration of the system using dmidecode. For example, dmidecode gives both the current RAM on the system and the maximum RAM supported by the system."
Here I will show an example how to decide the cpu threads and the layout:
[root@sc14ia06 nopermgen]# dmidecode -t 4
# dmidecode 2.10
SMBIOS 2.6 present.
Handle 0x0004, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU 1
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: D2 06 02 00 FF FB EB BF
Signature: Type 0, Family 6, Model 45, Stepping 2
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 (Fast floating-point save and restore)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Hyper-threading technology)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Genuine Intel(R) CPU @ 2.30GHz
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 2300 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0005
L2 Cache Handle: 0x0006
L3 Cache Handle: 0x0007
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 8
Core Enabled: 8
Thread Count: 16
Characteristics:
64-bit capable
Handle 0x0008, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU 2
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: D2 06 02 00 FF FB EB BF
Signature: Type 0, Family 6, Model 45, Stepping 2
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 (Fast floating-point save and restore)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Hyper-threading technology)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Genuine Intel(R) CPU @ 2.30GHz
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 2300 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0009
L2 Cache Handle: 0x000A
L3 Cache Handle: 0x000B
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 8
Core Enabled: 8
Thread Count: 16
Characteristics:
64-bit capable
It shows 2-socket cpu, 8-core per socket, and hyper threading enabled(core count:8, thread count: 16)
cat /proc/cpuinfo |egrep 'processor|physical id|core id'
processor : 0
physical id : 0
core id : 0
processor : 1
physical id : 0
core id : 1
processor : 2
physical id : 0
core id : 2
processor : 3
physical id : 0
core id : 3
processor : 4
physical id : 0
core id : 4
processor : 5
physical id : 0
core id : 5
processor : 6
physical id : 0
core id : 6
processor : 7
physical id : 0
core id : 7
processor : 8
physical id : 1
core id : 0
processor : 9
physical id : 1
core id : 1
processor : 10
physical id : 1
core id : 2
processor : 11
physical id : 1
core id : 3
processor : 12
physical id : 1
core id : 4
processor : 13
physical id : 1
core id : 5
processor : 14
physical id : 1
core id : 6
processor : 15
physical id : 1
core id : 7
processor : 16
physical id : 0
core id : 0
processor : 17
physical id : 0
core id : 1
processor : 18
physical id : 0
core id : 2
processor : 19
physical id : 0
core id : 3
processor : 20
physical id : 0
core id : 4
processor : 21
physical id : 0
core id : 5
processor : 22
physical id : 0
core id : 6
processor : 23
physical id : 0
core id : 7
processor : 24
physical id : 1
core id : 0
processor : 25
physical id : 1
core id : 1
processor : 26
physical id : 1
core id : 2
processor : 27
physical id : 1
core id : 3
processor : 28
physical id : 1
core id : 4
processor : 29
physical id : 1
core id : 5
processor : 30
physical id : 1
core id : 6
processor : 31
physical id : 1
core id : 7
This shows there are 32 logic processors.
core id: the processor id
physical id: the socket id
core id: the core id
To put in a picture, the processor mapping is:
Another way to get this information is:
cd /sys/devices/system/cpu
cat cpu0/topology/thread_siblings_list