Por que top mostra um número de núcleos diferente do cpuinfo?

Por que top mostra um número de núcleos diferente do cpuinfo?

Quando executo o topo, mostro CPU 0-7. Quando eu faço:

cat /proc/cpuinfo | grep "cpu cores" | uniq

Eu recebo:

cpu cores : 4

Se eu usar o grep "id físico", tenho 1.

Estou pensando que meu comando está errado e top está certo. Esta não é uma VM e é um servidor físico, RedHat. O que estou fazendo de errado?

Não tenho certeza se eles respondem:

Como saber o número de núcleos de um sistema no Linux?

Número de processadores em /proc/cpuinfo

Editar: estou correto nesse ID físico, se mostrar apenas 1, então tenho um chip físico na placa-mãe?

Editar: é uma CPU Intel (R) Xeon (R) X5560 a 2,80 GHz, mas o ID físico é 1 e pensei que seria 0, mas não há ID físico 0 no cpuinfo.

Editar: se for importante, estou tentando descobrir o licenciamento onde eles fazem 0,5 da contagem principal.

Responder1

O X5560 é um únicolasca. Se parece com isso:

insira a descrição da imagem aqui

grep "physical id"está dizendo que você tem UM processador físico instalado.

Se você tirar o dissipador de calor do topo você pode ver isso - um único físicomorrer(virado para baixo):

insira a descrição da imagem aqui

Se você pudesse remover esse dado e virá-lo, ficaria assim:

insira a descrição da imagem aqui

Nesse único dado físico há quatronúcleos físicos da CPUconstruído no silício:

insira a descrição da imagem aqui

grep "cpu cores"está lhe dizendo que seu processador possui quatro núcleos físicos integrados.

Cada núcleo é um único processador com uma unidade de ponto flutuante, um número de unidades de execução inteiras, um par de pilhas de registradores e alguma outra magia que permite que cada núcleo execute efetivamente dois fluxos de instruções independentes (threads) por vez.

insira a descrição da imagem aqui

topestá lhe dizendo que todos os processadores e núcleos do seu computador, coletivamente, podem executar oito fluxos de trabalho independentes por vez - está lhe dizendo que o sistema operacional é capaz de agendar oito threads simultâneos para execução a qualquer momento.

Responder2

Qual CPU você está usando? Quantos threads estão presentes por núcleo físico?

cat /proc/cpuinfomostra o número de núcleos físicos enquanto topmostra o número total de threads presentes.

Acho que sua CPU possui 4 núcleos físicos e 2 núcleos lógicos por núcleo físico. Então está topmostrando 8.

Além disso, o conteúdo /proc/cpuinfodepende um pouco da implementação. Como no shell do Android com root, o cpuinfoarquivo não contém nenhum termo cpu cores.

No entanto, em cpuinfocada thread é nomeado como processor : X, onde Xestá o thread no. Portanto, o último thread não deve ser igual à top/htopsaída.

O resultado de nproc --alltambém deve ser consistente comtop/htop

Responder3

topmostra uma “CPU” por CPU lógica; no x86, esse é o produto do número de soquetes no sistema, pelo número de núcleos físicos por soquete, pelo número de threads por núcleo.

A cpu coresentrada em /proc/cpuinfo, novamente em x86, mostra o número de núcleos físicos. Para encontrar o número de núcleos lógicos, conforme usado em top, você deve observar o siblingsvalor:

cat /proc/cpuinfo | grep "siblings" | uniq

Isto é descrito em detalhes nodocumentação do kernel.

lscpufornece informações sobre a(s) CPU(s) instalada(s) que são mais fáceis de entender do que /proc/cpuinfo(ou melhor, apresentam as mesmas informações de uma forma mais simples).

Responder4

cpuinfo mostra os núcleos reais, enquanto htop/top mostra os núcleos e threads como núcleos. Você provavelmente tem 4 núcleos e 4 threads, por isso.

informação relacionada