Então, o que são núcleos lógicos da CPU (em oposição aos núcleos físicos da CPU)?

48

Eu estava pesquisando sobre como eu poderia encontrar o número de CPUs em uma máquina e encontrei algumas postagens, mas estou confuso porque alguns mencionaram que você obtém os núcleos lógicos x núcleos físicos etc.
Então, qual é a diferença entre núcleos lógicos e físicos? existe uma maneira de obter apenas os núcleos físicos? Ou faz sentido incluir núcleos lógicos em nossa contagem?

Jim
fonte

Respostas:

62

Núcleos físicos são apenas isso, núcleos físicos dentro da CPU. Núcleos lógicos são as habilidades de um único núcleo para fazer 2 ou mais coisas simultaneamente. Isso surgiu da capacidade inicial das CPUs Pentium 4 de fazer o que foi chamado de Hyper Threading (HTT) .

Era um pouco de um jogo que estava sendo jogado onde subcomponentes do núcleo não estavam sendo usados ​​para certos tipos de instruções, enquanto outra instrução de longa duração poderia estar sendo executada. Portanto, a CPU poderia funcionar com duas coisas simultaneamente.

Os núcleos mais recentes são CPUs de pleno direito, portanto, eles estão trabalhando em várias coisas simultaneamente, mas não são verdadeiras CPUs como os núcleos físicos. Você pode ler mais sobre as limitações da funcionalidade hyperthreading versus os recursos físicos do núcleo aqui no tomshardware neste artigo intitulado: Intel Core i5 e Core i7: o mainstream Magnum Opus da Intel .

Você pode ver o detalhamento de sua caixa usando o 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

Acima, meu laptop Intel i5 possui 4 "CPUs" no total

CPU (s): 4

dos quais existem 2 núcleos físicos

Núcleo (s) por soquete: 2

dos quais cada um pode executar até 2 threads

Tópico (s) por núcleo: 2

ao mesmo tempo. Esses encadeamentos são os recursos lógicos do núcleo.

slm
fonte
Não tenho lscpu. Existe alguma ferramenta alternativa?
21413 Jim
1
A informação crua que lscpuusa é exposto aqui: cat /proc/cpuinfo. Qual é o seu sistema operacional?
slm
1
@ ThomasWeller - veja meus outros A'er aqui - unix.stackexchange.com/questions/113544/… .
Slm
1
Core(s) per sockettimes Thread(s) per core: 2= CPU(s): 4? Corrigir?
user3019105
1
@ user3019105 - correto
slm
12

Núcleos físicos são o número de núcleos físicos, componentes de hardware reais.

Núcleos lógicos são o número de núcleos físicos vezes o número de threads que podem ser executados em cada núcleo através do uso de hyperthreading.

por exemplo, meu processador de 4 núcleos executa dois threads por núcleo, então eu tenho 8 processadores lógicos.

cinza
fonte
Portanto, esse número só faz sentido se você estiver usando um processador compatível com hyperthreading? E o que isso significa? Ainda um segmento ocupará cada CPU de cada vez, certo? Então, o que esse número significa?
21713 Jim
Então, qual número devo procurar?
21413 Jim
não necessariamente, o multithreading simultâneo , por exemplo, permite que dois threads sejam executados ao mesmo tempo em um único núcleo. Existem várias outras vantagens também.
26213 ash
Eu olho para o número de núcleos físicos.
26213 ash
1

A tecnologia Hyperthreading permite que um único núcleo do processador físico se comporte como dois processadores lógicos.

Portanto, um único núcleo de processador pode executar dois threads independentes simultaneamente .

Intel refere-se a um processador físico como um soquete.

O Hyperthreading faz com que um Processador Físico se comporte como se tivesse dois Processadores Físicos, chamados Processador Lógico. porque?

Embora o hyperthreading não duplique o desempenho de um sistema, ele pode aumentar o desempenho utilizando melhor os recursos inativos, resultando em maior taxa de transferência para certos tipos importantes de carga de trabalho. Um aplicativo em execução em um processador lógico de um núcleo ocupado pode esperar um pouco mais da metade da taxa de transferência obtida durante a execução sozinha em um processador não com hyperthread.


Sumário


Processador físico é que podemos ver e cair.

Processador lógico é como, um núcleo físico atuando como dois núcleos físicos

Johnny Blaze
fonte
Link bloqueado para 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

Duas tomadas Cada soquete possui 14 núcleos físicos. Cada núcleo possui dois threads (28/14). O número total de "cpus" lógicos ou unidades de processamento lógico é 56 (é isso que "top" e alguns outros comandos mostram como número de "cpus").

Tagar
fonte
O que me confunde é que, no meu i3-3220, com a sua abordagem, recebo contagem de núcleos 2 e contagem de threads 2 (= 4), mas lscpu shows CPUs 4 and threads per 2 (=8) but lshw -C cpu` mostra 16 cpu lógicas numeradas de 0 a 15
Elder Geek
O dmidecode interpreta o que há no BIOS. não sabe exatamente o que há de errado no seu caso, por exemplo, você pode ter o hyperthreading desativado no BIOS ou algo assim. lscpu e lshw são comandos do SO, portanto mostre o que o kernel do SO reconheceu. As especificações da Intel para o seu processador mostram 2 núcleos e 4 threads.
Tagar
Ter o hyperthreading desativado resultaria em menos núcleos lógicos do que em mais?
Elder Geek
Entendi que você tem 2 núcleos e 2 threads relatados pelo dmidecode em vez de 2 núcleos e 4 threads, o número real de threads / núcleos i3-3220 possui. Então é menor. E isso foi apenas um palpite, não sei se você realmente tem o hyperthreading desativado no BIOS ou não.
Tagar
Parece que eu mal interpretado lscpusaída e é realmente 4 threads total, mas "lshw -C cpu` mostra 16 da CPU lógica" Eu não tenho certeza do que fazer com isso.
Elder Geek