Acho que os núcleos de CPU são mais bem explicados em relação ao MultiProcessing Simétrico ( SMP ).
Intel Core 2 Duo Diagrama para mostrar o layout físico.
As informações da CPU do sistema são armazenadas no diretório /proc . Ele pode ser bem apresentado pelo software lscpu , 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.
Desktop Computer user@hostname:~$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 60 Stepping: 3 CPU MHz: 800.000 BogoMIPS: 5586.94 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 2048K NUMA node0 CPU(s): 0,1 Server user@hostname% lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 48 On-line CPU(s) list: 0-47 Thread(s) per core: 2 Core(s) per socket: 12 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 62 Stepping: 4 CPU MHz: 1799.724 BogoMIPS: 3600.09 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 30720K NUMA node0 CPU(s): 0-47 Raspberry Pi jeff@clear-pi:~ $ lscpu Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Model name: ARMv7 Processor rev 5 (v7l) CPU max MHz: 900.0000 CPU min MHz: 600.0000
O total do servidor é 48, mas há 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 se compara esse caminho.
Desktop [Thread(s) per core: 1] * [Core(s) per socket: 1] * [Socket(s): 1] = 2 Server [Thread(s) per core: 2] * [Core(s) per socket: 12] * [Socket(s): 2] = 48 Raspberry Pi [Thread(s) per core: 1] * [Core(s) per socket: 4] * [Socket(s): 1] = 4
lshw tem mais informações do sistema, mas não tão úteis aqui.
Desktop Computer
user@hostname:~$ sudo lshw
*-cpu
description: CPU
product: Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
vendor: Intel Corp.
physical id: 9
bus info: cpu@0
version: Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
slot: SOCKET 0
size: 2800MHz
capacity: 3800MHz
width: 64 bits
clock: 100MHz
Server
user@hostname% sudo lshw
*-cpu:0
description: CPU
product: Intel(R) Xeon(R) CPU E5-2651 v2 @ 1.80GHz
vendor: Intel Corp.
physical id: 4
bus info: cpu@0
version: Intel(R) Xeon(R) CPU E5-2651 v2 @ 1.80GHz
slot: SOCKET 0
size: 1800MHz
capacity: 4GHz
width: 64 bits
clock: 100MHz
Raspberry Pi
user@hostname:~ $ sudo lshw
*-cpu:0
description: CPU
product: cpu
physical id: 0
bus info: cpu@0
size: 900MHz
capacity: 900MHz
capabilities: cpufreq
Por fim, esse método funcionou para mim em vários sistemas operacionais Linux / UNIX diferentes nos quais o lscpu não estava disponível. É uma variação de algo sugerido na questão e nos comentários, mas eu prefiro o comando curto 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 virtual?
Referência: link
Referência: link