The primary specification for multiprocessor x86-based setups is the Intel MultiProcessor Specification (last updated, AFAIK, to revision-006 on 1995-05-15).
Contents |
On Linux kernels with the proc filesystem enabled (and FreeBSD kernels with the linprocfs module loaded, although this does not provide all of the information as native Linux /proc/cpuinfo), the mounted proc/linprocfs filesystem contains a file cpuinfo (this is independent of any CPU-related modules being loaded, particularly cpuid on Linux or either OS's cpu module). Interpreting this file, as it pertains to multiple execution units, can be difficult. The following applies to Linux 2.6 kernels:
I've removed all output from the following examples, save that related to SMP identification.
[recombinator](0) $ cat /proc/cpuinfo processor : 0 model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 processor : 1 model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz physical id : 0 siblings : 2 core id : 1 cpu cores : 2 apicid : 1 initial apicid : 1 [recombinator](0) $
scurdev@hrududu:~$ cat /proc/cpuinfo processor : 0 model name : Intel(R) Xeon(TM) CPU 2.40GHz physical id : 0 siblings : 2 core id : 0 cpu cores : 1 processor : 1 model name : Intel(R) Xeon(TM) CPU 2.40GHz physical id : 0 siblings : 2 core id : 0 cpu cores : 1 processor : 2 model name : Intel(R) Xeon(TM) CPU 2.40GHz physical id : 3 siblings : 2 core id : 0 cpu cores : 1 processor : 3 model name : Intel(R) Xeon(TM) CPU 2.40GHz physical id : 3 siblings : 2 core id : 0 cpu cores : 1 scurdev@hrududu:~$
[aho](0) $ cat /proc/cpuinfo processor : 0 model name : Intel(R) Xeon(TM) CPU 2.80GHz processor : 1 model name : Intel(R) Xeon(TM) CPU 2.80GHz [aho](0) $
[knuth](0) $ cat /proc/cpuinfo processor : 0 model name : Intel(R) Celeron(R) CPU 2.00GHz [knuth](0) $
On FreeBSD, CPU/SMP information is primarily exported through the sysctl(8) interface. Seemingly relevant sysctls are listed below: