Grundlegendes zu Kern-IDs

8

Nur um die Kern-IDs zu verstehen:

Ich habe 4 CPUs:

$ cat /proc/cpu* | grep proc*
processor: 0
processor: 1
processor: 2
processor: 3

und das Ergebnis von nprocist auch 4.

Aber wenn ich benutze, cat /proc/cpu* | grep 'core id'bekomme ich das gleiche zweimal

core id: 0
core id: 2
core id: 0
core id: 2

Warum sind sie nicht wie die CPUs nummeriert und wie werden dieselben Kern-IDs unterschieden?

Der vollständige Inhalt von /proc/cpuinfoist wie folgt:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
model name  : Intel(R) Core(TM) i3 CPU       M 380  @ 2.53GHz
stepping    : 5
microcode   : 0x4
cpu MHz     : 1066.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm arat
bugs        :
bogomips    : 5053.71
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
model name  : Intel(R) Core(TM) i3 CPU       M 380  @ 2.53GHz
stepping    : 5
microcode   : 0x4
cpu MHz     : 2533.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 2
cpu cores   : 2
apicid      : 4
initial apicid  : 4
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm arat
bugs        :
bogomips    : 5053.71
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
model name  : Intel(R) Core(TM) i3 CPU       M 380  @ 2.53GHz
stepping    : 5
microcode   : 0x4
cpu MHz     : 1466.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm arat
bugs        :
bogomips    : 5053.71
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
model name  : Intel(R) Core(TM) i3 CPU       M 380  @ 2.53GHz
stepping    : 5
microcode   : 0x4
cpu MHz     : 1199.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 2
cpu cores   : 2
apicid      : 5
initial apicid  : 5
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm arat
bugs        :
bogomips    : 5053.71
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
John Goofy
quelle

Antworten:

19

Ihre CPU verfügt über zwei Kerne und vier Threads. Daher ist es völlig normal, doppelte Kernkennungen zu sehen: Jeder der aufgeführten „Prozessoren“ /proc/cpuinfoist ein logischer Prozessor auf einem physischen Kern, sodass Sie am Ende zwei physische Kerne (IDs 0 und 2) mit haben vier Prozessoren (IDs 0, 1, 2 und 3).

Die Kernnummerierung scheint seltsam, aber das liegt an Ihrer Firmware. Der Kernel berechnet die Kernkennungen basierend auf der APIC-ID , die von der Firmware zugewiesen wird. In Ihrem Fall sind die IDs 0, 1, 4 und 5, was zu Kern-IDs von 0 und 2 führt.

Stephen Kitt
quelle
1
FWIW, ich vermute, die lustige Apicid-Nummerierung (0,4,1,5) ist, weil sie einige Plätze reserviert, falls Sie 4 hatten. Die ersten beiden sind 0,1, Sie vermissen 2,3, Sie haben 4,5 und möglicherweise könnten Sie 6,7 haben.
AC