/proc/cpuinfo

Die Datei /proc/cpuinfo enthält Details zu den im Server verbauten Prozessoren.

Beispiel

# cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 16
model           : 4
model name      : AMD Phenom(tm) II X4 B95 Processor
stepping        : 2
cpu MHz         : 800.000
cache size      : 512 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
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 mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc pni cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
bogomips        : 5984.99
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate [8]

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 16
model           : 4
model name      : AMD Phenom(tm) II X4 B95 Processor
stepping        : 2
cpu MHz         : 800.000
cache size      : 512 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 4
apicid          : 1
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 mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc pni cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
bogomips        : 5984.96
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate [8]
[...]

Aufbau

Die Informationen sind pro logischem Prozessor gruppiert. Die einzelnen Gruppen sind wie folgt aufgebaut:

processor
ID des Logischer Prozessor, fortlaufend nummeriert, bei Null startend
vendor_id
Hersteller des Prozessors
erster Teil der CPUID-Kennung - ein maximal zwölf Zeichen langer Name des Herstellers
cpu family
Numerischer Wert, der Modellvariante spezifiziert
zweiter Teil der CPUID-Kennung
model name
Modellbezeichnung des Prozessors
stepping
Stepping bzw. Core Revisions
cpu MHz
Taktfrequenz in MHz
physical id
Anzahl der physischen Prozessoren sprich Anzahl der Sockel
siblings
Anzahl der parallel arbeitenden Einheiten
Ohne Hyperthreading: Siblings = Anzahl der Cores pro CPU
Mit Hyperthreading: Siblings = 2 * Anzahl der Cores pro CPU
core id
cpu cores
Anzahl der Cores pro CPU
Hyperthreading wird hierbei nicht mitgezählt

Tools

Es gibt mehrere Tools, um die CPU-Informationen zusammengefaßt anzuzeigen:

lscpu

# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                16
On-line CPU(s) list:   0-15
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 63
Model name:            Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz
Stepping:              2
CPU MHz:               1200.000
BogoMIPS:              6392.68
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-15

cpu.sh

Dieses Skript ist Teil von "How to find the number of physical cpus, cpu cores, and logical cpus"

# ./cpu.sh
16 logical processors (8 CPU cores)
1 Intel Xeon CPU E5-2667 v3 @ 3.20GHz (flags: aes,constant_tsc,ht,lm,pae,vmx)
└─16 threads / 8 cores each

/proc/cpuinfo + awk

# cat /proc/cpuinfo | \
awk -v FS=':' '                                       \
  /^physical id/ { if(nb_cpu<$2)  { nb_cpu=$2 } }     \
  /^cpu cores/   { if(nb_cores<$2){ nb_cores=$2 } }   \
  /^processor/   { if(nb_units<$2){ nb_units=$2 } }   \
  /^model name/  { model=$2 }                         \
                                                      \
  END{                                                \
   nb_cpu=(nb_cpu+1);                                 \
   nb_units=(nb_units+1);                             \
                                                      \
   print "CPU model:",model;                          \
   print nb_cpu,"CPU,",nb_cores,"physical cores per CPU, total",nb_units,"logical CPU units" \
 }'
CPU model:  Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz
1 CPU,  8 physical cores per CPU, total 16 logical CPU units

Quelle: http://superuser.com/questions/388115/interpreting-output-of-cat-proc-cpuinfo

grep + sort + wc

Die Gruppierung der Details in /proc/cpuinfo erschwert es eine schnelle Übersicht zu erstellen.

Anzahl der physischen Prozessoren / Sockel

# grep physical.id /proc/cpuinfo | sort -u | wc -l
1

Anzahl der logischen Prozessoren

# grep processor /proc/cpuinfo | wc -l
16

Anzahl der Cores pro CPU (ohne Hyperthreading)

# grep cpu.cores /proc/cpuinfo | sort -u
cpu cores       : 8

Anzahl der Cores pro CPU (mit Hyperthreading)

# grep siblings /proc/cpuinfo | sort -u
siblings        : 16

Weiterführende Informationen

How to find the number of physical cpus, cpu cores, and logical cpus

https://access.redhat.com/solutions/224883

x86 architecture CPUID

http://www.sandpile.org/x86/cpuid.htm

What do the flags in /proc/cpuinfo mean?

http://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean

proc/cpuinfo (zuletzt geändert am 2015-12-05 08:30:22 durch p54B39DE5)