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

5

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

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

Eu recebo:

cpu cores : 4

Se eu grep "id fisico" eu tenho 1.

Estou pensando que meu comando está errado e o topo está certo. Esta não é uma VM e é um servidor físico, RedHat. O que estou fazendo 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

Edit: Estou correto que o ID físico, se ele mostra apenas 1, então eu tenho um chip físico na placa-mãe?

Edit: É um Xeon Intel® Xeon® CPU (R) X5560 @ 2.80GHz, mas o id físico é 1, e eu pensei que seria 0, mas não há id 0 físico no cpuinfo.

Edit: Se isso importa, eu estou tentando descobrir o licenciamento onde eles fazem .5 a contagem do núcleo.

    
por johnny 21.11.2017 / 22:01

5 respostas

12

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

cat /proc/cpuinfo mostra o número de núcleos físicos, enquanto top mostra o número total de threads presentes.

Acho que sua CPU tem 4 núcleos físicos e 2 núcleos lógicos por núcleo físico. Então é top mostrando 8.

Além disso, o conteúdo de /proc/cpuinfo é um pouco dependente da implementação. Como no shell do Android rooteado, o arquivo cpuinfo não contém nenhum termo cpu cores .

No entanto, em cpuinfo , cada thread é nomeado como processor : X , em que X é thread no. Portanto, o último segmento não deve ser igual a top/htop output.

O resultado de nproc --all também deve ser consistente com top/htop

    
por 21.11.2017 / 22:12
8

O X5560 é um único chip . Parece assim:

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

Se você tirar o espalhador de calor do topo, você pode ver isso - um único die físico (com a face para baixo):

Sevocêpudesseremoverodadoevirá-lo,ficariaassim:

NesteúnicodadofísicoexistemquatronúcleosfísicosdeCPUconstruídosnosilício:

grep"cpu cores" está informando que seu processador tem quatro núcleos físicos incorporados a ele.

Cada núcleo é um único processador com uma unidade de ponto flutuante, um número de unidades inteiras de execução, 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. .

top está informando que todos os processadores e núcleos em seu computador, coletivamente, podem executar oito fluxos de trabalho independentes por vez - está informando que o sistema operacional pode programar oito encadeamentos simultâneos para execução a qualquer momento .

    
por 22.11.2017 / 14:46
7

top mostra 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 entrada cpu cores 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 olhar para o valor siblings :

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

Isso é descrito em detalhes na documentação do kernel .

lscpu fornece informações sobre a (s) CPU (s) instalada (s) que é mais fácil de entender do que /proc/cpuinfo (ou melhor, apresenta a mesma informação de maneira mais simples).

    
por 21.11.2017 / 23:10
3

Provavelmente, você tem uma CPU que é uma CPU "quad core" e tem o hyperthreading ativado para que cada núcleo físico se apresente ao SO (ao kernel) como dois núcleos lógicos , capazes ter dois encadeamentos atribuídos ao mesmo núcleo físico simultaneamente.

Os termos-chave para garantir que você entenda aqui são: CPU, ou chip físico, ou "die" (refere-se a "socket"); então, núcleo físico; então garanta que você tenha uma noção sobre "process" e "thread"; em seguida, limpe "hyperthreading" e "core lógico".

Eu assisti a uma palestra no LISA 2017 que esclareceu tudo muito bem; os slides dessa palestra estão disponíveis on-line , embora, é claro, não ajudem tanto quanto a palestra propriamente dita (já que a parte falada está faltando).

    
por 22.11.2017 / 00:07
1

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

    
por 21.11.2017 / 22:07

Tags