Wenn ich laufe, cat /proc/cpuinfo
erhalte ich die folgende Ausgabe (nur die entsprechende Zeile enthalten):
cpu cores: 1
Allerdings lscpu
gibt mir die folgende Ausgabe:
CPU(s): 2
Welcher der beiden ist richtig und was noch wichtiger ist, warum geben sie mir unterschiedliche Ergebnisse?
Die volle Ausgabe von cat /proc/cpuinfo
ist:
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:
Die volle Ausgabe von lscpu
ist:
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
(Dies kann auch unter https://gist.github.com/IQAndreas/f3f9139b8968987d3716 eingesehen werden .)
lscpu | grep Model
cpuinfo
hat zwei "Abschnitte", einen für jeden Kern. Ich habe dies verpasst, als ich die Ausgabe in einem kleineren Terminalfenster betrachtete, aber es wurde für mich sehr sichtbar, als die vollständige Ausgabe in eine Gist eingefügt wurde. Kann jemand bestätigen, dass dies tatsächlich diecpuinfo
Anzeige der Ausgabe ist?cpuinfo
Ausgabe zeigt Informationen pro Ausführungsthread. Eine Intel-CPU mit HyperThreading zeigt einen Ausgabeblock pro "Thread" an. Diecpuinfo
Ausgabe enthält einen Block pro Kern auf einer Mehrkern-CPU oder einfach einen Block pro bestücktem Socket. Die Ausgabe voncpuinfo
wird sehr lang, wenn Sie mehrere Intel-CPUs mit jeweils mehreren Kernen und aktiviertem HyperThreading haben.Antworten:
Dies steht im Einklang mit einem einzelnen Prozessor, der einen einzelnen Kern enthält, der zwei Ausführungsthreads durch Hyperthreading enthält . Sie haben also zwei logische Prozessoren, die jedoch den größten Teil ihrer Ressourcen gemeinsam nutzen (Befehlsdecodierung, Arithmetik usw.). Dies ermöglicht eine gewisse Parallelität - ein Thread kann fortschreiten, während der andere blockiert ist (z. B. auf einen Speicherzugriff warten), während die Hardwarekosten niedrig gehalten werden (weniger Komponenten als zwei unabhängige Kerne).
Schauen Sie sich den Rest der Ausgabe von
lscpu
und den Inhalt von an/proc/cpuinfo
. Siehe Also, was sind logische CPU-Kerne (im Gegensatz zu physischen CPU-Kernen)? zum Beispiel.quelle