Untuk mendapatkan gambaran lengkap, Anda perlu melihat jumlah utas per inti, inti per soket, dan soket. Jika Anda mengalikan angka-angka ini, Anda akan mendapatkan jumlah CPU di sistem Anda.
CPU =Utas per inti X inti per soket X soket
CPU adalah apa yang Anda lihat saat menjalankan htop
(ini tidak sama dengan CPU fisik).
Berikut adalah contoh dari mesin desktop:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Dan server:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
Output dari nproc
sesuai dengan hitungan CPU dari lscpu
. Untuk mesin desktop di atas, ini harus sesuai dengan 8 CPU yang dilaporkan oleh lscpu
:
$ nproc --all
8
Output dari /proc/cpuinfo
harus sesuai dengan informasi ini, misalnya pada sistem desktop di atas kita dapat melihat ada 8 prosesor (CPU) dan 4 core (core id 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
dilaporkan oleh /proc/cpuinfo
sesuai dengan Core(s) per socket
dilaporkan oleh lscpu
. Untuk mesin desktop di atas, ini harus sesuai dengan 4 Inti per soket yang dilaporkan oleh lscpu:
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
Untuk menjawab pertanyaan Anda secara khusus, Anda memberi tahu berapa banyak inti yang Anda miliki dengan mengalikan jumlah inti yang Anda miliki per soket dengan jumlah soket yang Anda miliki.
Inti =Inti per soket X Soket
Sebagai contoh sistem di atas desktop memiliki 4 inti:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4
Sementara server memiliki 16:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16
Utilitas berguna lainnya adalah dmidecode
yang menampilkan per informasi soket. Dalam kasus sistem server yang tercantum di atas, kami memperkirakan akan melihat 8 inti per soket dan 16 utas per 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
perintah memiliki sejumlah opsi berguna yang mungkin ingin Anda periksa, misalnya:
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
Lihat man lscpu
untuk detailnya.
Singkatnya:
- Anda harus mengetahui soket, inti, dan utas
- Anda harus berhati-hati dengan istilah CPU karena artinya berbeda dalam konteks yang berbeda
Anda harus melihat soket dan inti per soket. Dalam hal ini Anda memiliki 1 CPU fisik (soket) yang memiliki 4 inti (inti per soket).
Anda bisa mendapatkan informasi ini dengan nproc(1)
perintah
$ nproc --all
12
Itu tidak memerlukan hak akses root.