GNU/Linux >> Tutoriales Linux >  >> Linux

Linux – ¿Número de procesadores en /proc/cpuinfo?

Mientras aprendía sobre la carga de la CPU, me di cuenta de que depende de la cantidad de núcleos. Si tengo 2 núcleos, la carga de 2 proporcionará el 100 % de utilización de la CPU.

Así que traté de encontrar núcleos. (Ya sé que el sistema tiene 2 núcleos, 4 subprocesos, por lo que 2 núcleos virtuales Verifique aquí sobre el procesador). Así que ejecuté cat /proc/cpuinfo
Que me dio

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
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 syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 1600.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
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 syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 800.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
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 syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 3
initial apicid  : 3
fpu     : yes
fpu_exception   : yes
cpuid level : 13
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 syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

Ahora estoy totalmente confundido. Muestra 4 procesadores, con 2 núcleos de CPU.
¿Alguien puede explicar este resultado?

Relacionado:Linux – netfilter/iptables:¿por qué no usar la tabla sin formato?

Una vez que la carga de mi CPU fue de 3.70, ¿es esta la carga máxima? Todavía en ese momento la CPU estaba en <50%.

¿Qué pasa con el turboalimentador? ¿Todos los núcleos son turboalimentados o solo físicos?

¿Algún método en Ubuntu para obtener la frecuencia actual de la CPU para ver si el procesador está en turbo boost o no?

Carga fue a 3,70 alrededor del 100%. Pero el uso de la CPU no fue del 100 % debido al tiempo de respuesta de E/S. Esto no significa que el dispositivo IO estará a la máxima velocidad, pero el dispositivo IO estará ocupado al 100 %, lo que a veces afecta a las aplicaciones que usan IO, por ejemplo:la música puede interrumpirse.

Respuesta aceptada:

Las palabras "CPU", "procesador" y "núcleo" se utilizan de forma un tanto confusa. Se refieren a la arquitectura del procesador. Un núcleo es la unidad independiente más pequeña que implementa un procesador de propósito general; un procesador es un conjunto de núcleos (en algunos sistemas ARM, un procesador es un conjunto de clústeres que a su vez son conjuntos de núcleos). Un chip puede contener uno o más procesadores (los chips x86 contienen un solo procesador, en este sentido de la palabra procesador ).

Hyperthreading significa que algunas partes de un núcleo están duplicadas. Un núcleo con hyperthreading a veces se presenta como un conjunto de dos "núcleos virtuales", lo que no significa que cada núcleo sea virtual, sino que el plural es virtual porque en realidad no son núcleos separados y a veces tendrán que esperar mientras el otro núcleo es haciendo uso de una parte compartida.

En lo que respecta al software, solo hay un concepto que es útil en casi todas partes:la noción de hilos paralelos de ejecución. Así que en la mayoría de los manuales de software, los términos CPU y procesador se utilizan para referirse a cualquier pieza de hardware que ejecuta código de programa. En términos de hardware, esto significa un núcleo o un núcleo virtual con hiperprocesamiento.

Así top le muestra 4 CPU, porque puede tener 4 subprocesos ejecutándose al mismo tiempo. /proc/cpuinfo tiene 4 entradas, una para cada CPU (en ese sentido). El processor números (que son el número de la cpuNUMBER entradas en /sys/devices/system/cpu ) corresponden a estos 4 hilos.

/proc/cpuinfo es uno de los pocos lugares donde obtiene información sobre qué hardware implementa estos hilos de ejecución:

physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2

significa que cpu0 es uno de los 4 subprocesos dentro del componente físico (procesador) número 0, y está en el núcleo 0 entre 2 en este procesador.


Linux
  1. ¿Cómo obtengo la ruta de un proceso en Unix/Linux?

  2. /proc/[pid]/pagemaps y /proc/[pid]/maps | linux

  3. ¿Cómo obtener la cantidad de CPU/núcleos en Linux desde la línea de comandos?

  4. ¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

  5. Interpretando la salida de cat/proc/cpuinfo

Una guía para el sistema de archivos '/proc' en Linux

Archivos /proc/cpuinfo y /proc/meminfo en Linux

Explicación del archivo /proc/cpuinfo

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

linux /proc/loadavag

Número de procesadores en /proc/cpuinfo