Entonces, ¿qué son los núcleos de CPU lógicos (a diferencia de los núcleos de CPU físicos)?

48

Estaba buscando en Google cómo podría encontrar el número de CPU en una máquina y encontré algunas publicaciones, pero estoy confundido porque algunos mencionaron que obtienes los núcleos lógicos frente a los núcleos físicos, etc.
Entonces, ¿cuál es la diferencia entre los núcleos lógicos y físicos? ¿Hay alguna manera de que solo pueda obtener los núcleos físicos? ¿O tiene sentido incluir núcleos lógicos en nuestro recuento?

Jim
fuente

Respuestas:

62

Los núcleos físicos son solo eso, núcleos físicos dentro de la CPU. Los núcleos lógicos son las habilidades de un solo núcleo para hacer 2 o más cosas simultáneamente. Esto surgió de la capacidad inicial de las CPU Pentium 4 para hacer lo que se denominó Hyper Threading (HTT) .

Era un juego que se jugaba donde los subcomponentes del núcleo no se usaban para ciertos tipos de instrucciones, mientras que podría haberse ejecutado otra instrucción de larga duración. Por lo tanto, la CPU podría funcionar en 2 cosas simultáneamente.

Los núcleos más nuevos son CPU más completas, por lo que están trabajando en varias cosas simultáneamente, pero no son verdaderas CPU como lo son los núcleos físicos. Puede leer más sobre las limitaciones de la funcionalidad de hyperthreading frente a las capacidades físicas del núcleo aquí en tomshardware en este artículo titulado: Intel Core i5 y Core i7: Mainstream Magnum Opus de Intel .

Puedes ver el desglose de tu caja usando el lscpucomando:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               2667.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

En lo anterior, mi computadora portátil Intel i5 tiene 4 "CPU" en total

CPU (s): 4

de los cuales hay 2 núcleos físicos

Núcleo (s) por zócalo: 2

de los cuales cada uno puede ejecutar hasta 2 hilos

Hilo (s) por núcleo: 2

al mismo tiempo. Estos hilos son las capacidades lógicas del núcleo.

slm
fuente
No tengo lscpu. ¿Hay alguna herramienta alternativa?
Jim
1
La información en bruto que se lscpuusa está expuesta aquí: cat /proc/cpuinfo. ¿Cuál es tu sistema operativo?
slm
1
@ThomasWeller - vea mi otro A'er aquí - unix.stackexchange.com/questions/113544/… .
slm
1
Core(s) per socketveces Thread(s) per core: 2= CPU(s): 4? ¿Correcto?
user3019105
1
@ user3019105 - correcto
slm
12

Los núcleos físicos son una cantidad de núcleos físicos, componentes de hardware reales.

Los núcleos lógicos son el número de núcleos físicos multiplicado por el número de subprocesos que pueden ejecutarse en cada núcleo mediante el uso de hyperthreading.

por ejemplo, mi procesador de 4 núcleos ejecuta dos subprocesos por núcleo, por lo que tengo 8 procesadores lógicos.

ceniza
fuente
Entonces, ¿este número tiene sentido solo si se usa un procesador que admite hyperthreading? ¿Y qué significa esto? Todavía un hilo ocupará cada CPU a la vez ¿verdad? Entonces, ¿qué significa este número?
Jim
Entonces, ¿qué número debo apuntar?
Jim
no necesariamente, el subprocesamiento múltiple simultáneo , por ejemplo, permite ejecutar dos subprocesos al mismo tiempo en un solo núcleo. También hay otras ventajas.
ceniza
Miro la cantidad de núcleos físicos.
ceniza
1

La tecnología Hyperthreading permite que un solo núcleo de procesador físico se comporte como dos procesadores lógicos.

Entonces, un solo núcleo de procesador puede ejecutar dos subprocesos independientes simultáneamente .

Intel se refiere a un procesador físico como un zócalo.

Hyperthreading hace que un procesador físico se comporte como si tuviera dos procesadores físicos, que se denominan procesador lógico. ¿por qué?

Si bien el hyperthreading no duplica el rendimiento de un sistema, puede aumentar el rendimiento al utilizar mejor los recursos inactivos que conducen a un mayor rendimiento para ciertos tipos de cargas de trabajo importantes. Una aplicación que se ejecuta en un procesador lógico de un núcleo ocupado puede esperar un poco más de la mitad del rendimiento que obtiene mientras se ejecuta solo en un procesador no hiperprocesado.


Resumen


Procesador físico es que podemos ver y caer.

Procesador lógico es como un núcleo físico que actúa como dos núcleos físicos

Johnny Blaze
fuente
Enlace reventado a vmware doc.
slm
0
$ sudo dmidecode |egrep "Socket Designation: Proc|((Thread|Core) Count)"
Socket Designation: Proc 1
        Core Count: 14
        Thread Count: 28
Socket Designation: Proc 2
        Core Count: 14
        Thread Count: 28

Dos enchufes Cada zócalo tiene 14 núcleos físicos. Cada núcleo tiene dos hilos (28/14). El número total de "cpus" lógicos o unidades de procesamiento lógico es 56 (eso es lo que "top" y algunos otros comandos le mostrarían como número de "cpus").

Tagar
fuente
Lo que me desconcierta es que en mi i3-3220 con su enfoque obtengo el recuento de núcleos 2 y el recuento de hilos 2 (= 4) pero lscpu shows CPUs 4 and threads per 2 (=8) but lshw -C cpu` muestra 16 CPU lógicas numeradas del 0 al 15
Elder Geek
dmidecode interpreta lo que hay en el BIOS ... no estoy seguro exactamente de lo que está mal en su caso, por ejemplo, puede tener hyperthreading deshabilitado en el BIOS o algo así. lscpu y lshw son comandos del sistema operativo, así que muestra qué kernel del sistema operativo ha reconocido. Las especificaciones de Intel para su procesador muestran 2 núcleos y 4 hilos.
Tagar
¿No deshabilitar hyperthreading daría como resultado menos núcleos lógicos en lugar de más?
Élder Geek
Comprendí que tienes 2 núcleos 2 hilos informados por dmidecode en lugar de 2 núcleos 4 hilos número real de hilos / núcleos que tiene i3-3220. Entonces es más pequeño. Y eso fue solo una suposición, no sé si en realidad tienes hyperthreading deshabilitado en BIOS o no.
Tagar
Parece que he malinterpretado la lscpusalida y en realidad son 4 hilos en total, pero "lshw -C cpu` muestra 16 CPU lógicas" No estoy seguro de qué hacer con eso.
Elder Geek