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