Interpretación de salida de cat / proc / cpuinfo


22

¿Cómo se interpreta la información impresa con el siguiente comando en Linux?

cat /proc/cpuinfo

En mi computadora portátil, obtengo el siguiente resultado:

[gaurish108: ~] $ cat / proc / cpuinfo (02-09 15:34)
procesador: 0
vendor_id: GenuineIntel
familia de la CPU: 6
modelo: 37
nombre del modelo: Intel (R) Core (TM) i3 CPU M 330 @ 2.13GHz
paso a paso: 2
cpu MHz: 933.000
tamaño de caché: 3072 KB
Identificación física: 0
hermanos: 4
ID del núcleo: 0
núcleos de la CPU: 2
apicid: 0
apicidio inicial: 0
fdiv_bug: no
hlt_bug: no
f00f_bug: no
coma_bug: no
fpu: si
fpu_exception: sí
Nivel de CPU: 11
wp: si
banderas: FPU VME de pse tsc msr pae MCE CX8 apic septiembre mtrr PGE MCA cmov pat pse36 clflush dts ACPI MMX fxsr SSE SSE2 ss ht tm PBE nx rdtscp lm constant_tsc arch_perfmon JPEs BTS xtopology NONSTOP_TSC aperfmperf PNI dtes64 monitorear ds_cpl vmx est TM2 SSSE3 CX16 XTPR pdcm sse4_1 sse4_2 popcnt lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips: 4256.49
Tamaño de clflush: 64
alineación_caché: 64
tamaños de dirección: 36 bits físicos, 48 ​​bits virtuales
gestión de energía:

procesador: 1
vendor_id: GenuineIntel
familia de la CPU: 6
modelo: 37
nombre del modelo: Intel (R) Core (TM) i3 CPU M 330 @ 2.13GHz
paso a paso: 2
cpu MHz: 933.000
tamaño de caché: 3072 KB
Identificación física: 0
hermanos: 4
ID del núcleo: 0
núcleos de la CPU: 2
apicid: 1
apicidio inicial: 1
fdiv_bug: no
hlt_bug: no
f00f_bug: no
coma_bug: no
fpu: si
fpu_exception: sí
Nivel de CPU: 11
wp: si
banderas: FPU VME de pse tsc msr pae MCE CX8 apic septiembre mtrr PGE MCA cmov pat pse36 clflush dts ACPI MMX fxsr SSE SSE2 ss ht tm PBE nx rdtscp lm constant_tsc arch_perfmon JPEs BTS xtopology NONSTOP_TSC aperfmperf PNI dtes64 monitorear ds_cpl vmx est TM2 SSSE3 CX16 XTPR pdcm sse4_1 sse4_2 popcnt lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips: 4256.40
Tamaño de clflush: 64
alineación_caché: 64
tamaños de dirección: 36 bits físicos, 48 ​​bits virtuales
gestión de energía:

procesador: 2
vendor_id: GenuineIntel
familia de la CPU: 6
modelo: 37
nombre del modelo: Intel (R) Core (TM) i3 CPU M 330 @ 2.13GHz
paso a paso: 2
cpu MHz: 933.000
tamaño de caché: 3072 KB
Identificación física: 0
hermanos: 4
ID del núcleo: 2
núcleos de la CPU: 2
apicid: 4
apicidio inicial: 4
fdiv_bug: no
hlt_bug: no
f00f_bug: no
coma_bug: no
fpu: si
fpu_exception: sí
Nivel de CPU: 11
wp: si
banderas: FPU VME de pse tsc msr pae MCE CX8 apic septiembre mtrr PGE MCA cmov pat pse36 clflush dts ACPI MMX fxsr SSE SSE2 ss ht tm PBE nx rdtscp lm constant_tsc arch_perfmon JPEs BTS xtopology NONSTOP_TSC aperfmperf PNI dtes64 monitorear ds_cpl vmx est TM2 SSSE3 CX16 XTPR pdcm sse4_1 sse4_2 popcnt lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips: 4256.43
Tamaño de clflush: 64
alineación_caché: 64
tamaños de dirección: 36 bits físicos, 48 ​​bits virtuales
gestión de energía:

procesador: 3
vendor_id: GenuineIntel
familia de la CPU: 6
modelo: 37
nombre del modelo: Intel (R) Core (TM) i3 CPU M 330 @ 2.13GHz
paso a paso: 2
cpu MHz: 933.000
tamaño de caché: 3072 KB
Identificación física: 0
hermanos: 4
ID del núcleo: 2
núcleos de la CPU: 2
apicid: 5
apicidio inicial: 5
fdiv_bug: no
hlt_bug: no
f00f_bug: no
coma_bug: no
fpu: si
fpu_exception: sí
Nivel de CPU: 11
wp: si
banderas: FPU VME de pse tsc msr pae MCE CX8 apic septiembre mtrr PGE MCA cmov pat pse36 clflush dts ACPI MMX fxsr SSE SSE2 ss ht tm PBE nx rdtscp lm constant_tsc arch_perfmon JPEs BTS xtopology NONSTOP_TSC aperfmperf PNI dtes64 monitorear ds_cpl vmx est TM2 SSSE3 CX16 XTPR pdcm sse4_1 sse4_2 popcnt lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips: 4256.42
Tamaño de clflush: 64
alineación_caché: 64
tamaños de dirección: 36 bits físicos, 48 ​​bits virtuales
gestión de energía:

Ahora dice que hay 4 procesadores en el sistema. También hay un campo dentro de la información de cada campo del procesador que dice que los núcleos cou son 2.

¿Eso significa que hay 4 CPU de Intel i3 en mi sistema? ¿Qué significa realmente el campo del procesador aquí?

Respuestas:


17

Las entradas son procesadores lógicos ; objetos utilizados por el núcleo internamente, no necesariamente vinculados a dispositivos físicos. (Tenga en cuenta que todos tienen lo mismo physical id).

En otras palabras, representan los cuatro núcleos de una sola CPU Intel i3.

Además, como se señaló en esta publicación (que no es exactamente un duplicado pero está estrechamente relacionado), esos núcleos también son lógicos: la CPU tiene dos núcleos físicamente pero admite hyperthreading.

Tenga en cuenta que algunos procesadores Intel (incluido el i5) usan hyperthreading, un sistema en el que un único procesador tiene (por ejemplo) 2 núcleos físicos, pero proporcionará 4 núcleos lógicos, lo que permite que el sistema operativo trate al procesador como si tuviera más núcleos de los que realmente tiene. hace.


Si su sistema tiene la lscpuherramienta (parte de util-linux reciente ), generará un resumen más legible para los humanos de las CPU instaladas, por ejemplo:

Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1

¿Es el tamaño de la dirección física cuanto más largo mejor o más corto mejor?
Qian Chen

@ElgsQianChen: Por lo general, cuanto más tiempo mejor. Vea cómo el mundo pasó de las CPU de 8 bits a las de 16 a 32 bits y luego a las de 64 bits. Ese recuento de bits es el "tamaño de la dirección".
Grawity

Parece que veo una variedad de tamaños físicos, como 36 bits, 40 bits y 46 bits. El tamaño virtual parece ser siempre de 48 bits. Entonces, ¿por qué hay diferentes tamaños físicos y qué significan cuando son más cortos o más largos?
Qian Chen

9

Aquí hay un script awk en línea para imprimir y extraer datos relevantes de /proc/cpuinfo:

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" \
 }'

Salida para un servidor de alto rendimiento:

CPU model:  Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz
2 CPU,  6 physical cores per CPU, total 24 logical CPU units

Salida para una computadora portátil Core i5:

CPU model:  Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
1 CPU,  2 physical cores per CPU, total 4 logical CPU units

0

Simplemente significa:

  1. En realidad, tiene una CPU i3 de cuatro núcleos en su sistema.

  2. Esta "CPU i3 de cuatro núcleos" tiene cuatro núcleos lógicos.


2
En realidad, es una CPU i3 de doble núcleo con cuatro núcleos lógicos.
David Schwartz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.