Pergunta:
Gostaria de perguntar o que pode fazer com que existam duas informações diferentes sobre o número de processadores. Veja os relatórios abaixo.
Diálogo do sistema:
Se abrir a guia Configurações do sistema/Detalhes (o mesmo que Logout-wheel e Sobre este computador), recebo o seguinte relato:
Processador: CPU Intel® Xeon(R) E5-2680 v3 a 2,50 GHz × 16
CLI: cpuinfo (1)
No entanto, usando um comando de linha de comando, recebo o seguinte:
$ cat /proc/cpuinfo | grep processor | wc -l
24
Tenho tendência a acreditar no relatório da linha de comando - mas o que pode fazer com que sejam diferentes?
FIY: O monitor do sistema também mostra estatísticas de 24 núcleos
CLI: cpuinfo (2)
Conforme sugerido nos comentários, também executei a seguinte linha de comando
$ cat /proc/cpuinfo |grep 'core id'|sort|uniq|wc -l
12
Então agora tenho até um terceiro resultado! Este faz sentido, pois pode ser que 12 núcleos com 2 processadores estejam na máquina - mas como é possível que a caixa de diálogo do sistema conte 16?
Responder1
Acho que os núcleos da CPU são melhor explicados em relação ao Symmetric MultiProcessing (SMP).
Intel Core 2 DuoDiagrama para mostrar o layout físico.
As informações da CPU do sistema são armazenadas no /proc
diretório. Ele pode ser apresentado de forma organizada pelo lscpu
software, conforme abaixo. Estou dando três exemplos de contraste: um desktop com 2 núcleos de CPU, um servidor com 48 e um Raspberry Pi com 4.
Computador de mesa usuário@nome do host:~$ lscpu Arquitetura: x86_64 Modo(s) de operação da CPU: 32 bits, 64 bits Ordem de bytes: Little Endian CPU(s): 2 Lista on-line de CPU(s): 0,1 Thread(s) por núcleo: 1 Núcleo(s) por soquete: 2 Soquete(s): 1 Nós NUMA: 1 ID do fornecedor: GenuineIntel Família de CPU: 6 Modelo: 60 Pisando: 3 CPUMHz: 800.000 BogoMIPS: 5586,94 Virtualização: VT-x Cache L1d: 32K Cache L1i: 32K Cache L2: 256K Cache L3: 2048K NUMA node0 CPU(s): 0,1 Servidor usuário@nome do host% lscpu Arquitetura: x86_64 Modo(s) de operação da CPU: 32 bits, 64 bits Ordem de bytes: Little Endian CPU(s): 48 Lista on-line de CPU(s): 0-47 Thread(s) por núcleo: 2 Núcleo(s) por soquete: 12 Soquete(s): 2 Nós NUMA: 1 ID do fornecedor: GenuineIntel Família de CPU: 6 Modelo: 62 Pisando: 4 CPUMHz: 1799,724 BogoMIPS: 3600,09 Virtualização: VT-x Cache L1d: 32K Cache L1i: 32K Cache L2: 256K Cache L3: 30720K CPU(s) NUMA node0: 0-47 Raspberry Pi jeff@clear-pi:~ $ lscpu Arquitetura: armv7l Ordem de bytes: Little Endian CPU(s): 4 Lista on-line de CPU(s): 0-3 Thread(s) por núcleo: 1 Núcleo(s) por soquete: 4 Soquete(s): 1 Nome do modelo: Processador ARMv7 rev 5 (v7l) MHz máximo da CPU: 900,0000 Mínimo de CPU MHz: 600,0000
O total do servidor é 48, mas existem 3 números que devem ser multiplicados para chegar lá:2*12*2=48. As diferenças no arranjo do fabricante da CPU são aparentes quando comparadas desta forma.
Área de Trabalho [Thread(s) por núcleo: 1] * [Núcleo(s) por soquete: 1] * [Soquete(s): 1] = 2 Servidor [Thread(s) por núcleo: 2] * [Núcleo(s) por soquete: 12] * [Socket(s): 2] = 48 Raspberry Pi [Thread(s) por núcleo: 1] * [Núcleo(s) por soquete: 4] * [Soquete(s): 1] = 4
lshw
tem mais informações do sistema, mas não é tão útil aqui.
Computador de mesa usuário@nome do host:~$ sudo lshw *-CPU descrição: CPU produto: CPU Intel(R) Celeron(R) G1840 a 2,80 GHz fornecedor: Intel Corp. identificação física: 9 informações do ônibus: cpu@0 versão: CPU Intel(R) Celeron(R) G1840 a 2,80 GHz slot: SOQUETE 0 tamanho: 2800 MHz capacidade: 3800 MHz largura: 64 bits relógio: 100 MHz Servidor usuário@nome do host% sudo lshw *-cpu:0 descrição: CPU produto: CPU Intel (R) Xeon (R) E5-2651 v2 a 1,80 GHz fornecedor: Intel Corp. identificação física: 4 informações do ônibus: cpu@0 versão: CPU Intel(R) Xeon(R) E5-2651 v2 a 1,80 GHz slot: SOQUETE 0 tamanho: 1800 MHz capacidade: 4GHz largura: 64 bits relógio: 100 MHz Raspberry Pi usuário@nome do host:~ $ sudo lshw *-cpu:0 descrição: CPU produto: CPU ID físico: 0 informações do ônibus: cpu@0 tamanho: 900 MHz capacidade: 900 MHz capacidades: cpufreq
Por último, esse método funcionou para mim em vários sistemas operacionais Linux/UNIX diferentes onde o lscpu não estava disponível. É uma variação de algo sugerido na pergunta e nos comentários, mas prefiro o comando abreviado e a saída simples.
user@hostname:~ $ grep -c ^processor /proc/cpuinfo
4
Referência:Como encontrar o número de núcleos de CPU incluindo virtuais?
Referência:https://stackoverflow.com/questions/19225859/difference-between-core-and-processor