Tam bir görüntü elde etmek için çekirdek başına iplik sayısına, soket başına çekirdek ve soket sayısına bakmanız gerekir . Bu sayıları çarparsanız , sisteminizde CPU sayısını elde edersiniz .
CPUs = Her çekirdek için çekirdek X soket başına X çekirdek
CPU'lar çalıştırdığınızda gördüğünüz şeydir htop
(bunlar fiziksel CPU'lara eşit değildir).
İşte bir masaüstü bilgisayardan bir örnek:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Ve bir sunucu:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
nproc
CPU çıkışına karşılık gelen çıkış lscpu
. Yukarıdaki masaüstü bilgisayar için bunun bildirdiği 8 CPU ile eşleşmesi gerekir lscpu
:
$ nproc --all
8
Çıktısı /proc/cpuinfo
bu bilgiyle eşleşmelidir, örneğin yukarıdaki masaüstü sistemde 8 işlemci (CPU) ve 4 çekirdek (çekirdek kimliği 0-3) olduğunu görebiliriz:
$ 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
Tarafından rapor /proc/cpuinfo
için karşılık gelir Core(s) per socket
tarafından rapor lscpu
. Yukarıdaki masaüstü bilgisayar için bunun lscpu tarafından bildirilen her soket için 4 Çekirdek (ler) ile eşleşmesi gerekir:
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
Sorunuza özel olarak cevap vermek için, soket başına sahip olduğunuz çekirdek sayısını, sahip olduğunuz soket sayısı ile çarparak kaç çekirdeğiniz olduğunu söylersiniz.
Çekirdek = Soket başına Çekirdek X Prizleri
Masaüstünün üstündeki örnek sistemler için 4 çekirdekli:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4
Sunucunun 16'sı varken:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16
Bir başka yararlı yardımcı program dmidecode
soket bilgisi başına çıktıdır. Yukarıda listelenen sunucu sistemlerinde soket başına 8 çekirdek ve soket başına 16 konu görmeyi bekliyoruz:
$ 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
Komut örneğin, kontrol etmek isteyebilirsiniz kullanışlı bir dizi seçenek vardır:
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
Detaylar man lscpu
için bakınız.
Özetle:
- Soket, çekirdek ve dişlerin farkında olmanız gerekir
- Farklı bağlamlarda farklı şeyler ifade ettiği için CPU terimine dikkat etmeniz gerekir.