Chcete-li získat úplný obrázek, musíte se podívat na počet vláken na jádro, jader na patici a patice. Pokud tato čísla vynásobíte, získáte počet CPU ve vašem systému.
CPU =Počet vláken na jádro X jader na soket X soket
CPU jsou to, co vidíte, když spustíte htop
(tyto se nerovnají fyzickým CPU).
Zde je příklad ze stolního počítače:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
A server:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
Výstup nproc
odpovídá počtu CPU od lscpu
. U stolního počítače výše by to mělo odpovídat 8 CPU hlášeným lscpu
:
$ nproc --all
8
Výstup /proc/cpuinfo
by měly odpovídat těmto informacím, například na desktopovém systému výše vidíme, že je zde 8 procesorů (CPU) a 4 jádra (id jádra 0-3):
$ grep -E 'processor|core id' /proc/cpuinfo
processor : 0
core id : 0
processor : 1
core id : 0
processor : 2
core id : 1
processor : 3
core id : 1
processor : 4
core id : 2
processor : 5
core id : 2
processor : 6
core id : 3
processor : 7
core id : 3
cpu cores
hlášeno /proc/cpuinfo
odpovídá Core(s) per socket
hlášeno lscpu
. U výše uvedeného stolního počítače by to mělo odpovídat 4 jádrům na soket, které uvádí lscpu:
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
Chcete-li konkrétně odpovědět na vaši otázku, sdělte, kolik jader máte, vynásobením počtu jader, která máte na jeden soket, počtem soketů, které máte.
Jádra =Počet jader na soket X Sockets
Například systémy nad desktopem mají 4 jádra:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4
Zatímco server má 16:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16
Další užitečnou utilitou je dmidecode
které vydávají informace na zásuvku. V případě výše uvedeného serverového systému očekáváme 8 jader na soket a 16 vláken na soket:
$ sudo dmidecode -t 4 | grep -E 'Socket Designation|Count'
Socket Designation: CPU1
Core Count: 8
Thread Count: 16
Socket Designation: CPU2
Core Count: 8
Thread Count: 16
lscpu
příkaz má řadu užitečných možností, které byste mohli chtít vyzkoušet, například:
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
Viz man lscpu
pro podrobnosti.
Shrnuto:
- Musíte si být vědomi soketů, jader a vláken
- Musíte si dávat pozor na výraz CPU, protože v různých kontextech znamená různé věci
Musíte se podívat na zásuvky a jádra na zásuvku. V tomto případě máte 1 fyzický CPU (socket), který má 4 jádra (jádra na patici).
Tyto informace můžete získat na nproc(1)
příkaz
$ nproc --all
12
Nevyžaduje práva root.