Untuk mendapatkan gambar yang 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.
CPUs = Threads per core X core per soket X socket
CPU adalah apa yang Anda lihat ketika Anda menjalankan htop
(ini tidak sama dengan CPU fisik).
Ini 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 nproc
sesuai dengan jumlah 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
The cpu cores
dilaporkan oleh /proc/cpuinfo
berkorespondensi ke Core(s) per socket
dilansir lscpu
. Untuk mesin desktop di atas, ini harus sesuai dengan 4 Core per socket yang dilaporkan oleh lscpu:
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
Untuk secara spesifik menjawab pertanyaan Anda, Anda memberi tahu berapa inti yang Anda miliki dengan mengalikan jumlah inti yang Anda miliki per soket dengan jumlah soket yang Anda miliki.
Core = Core per soket X Soket
Sebagai contoh sistem di atas desktop memiliki 4 core:
$ 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 lain yang bermanfaat adalah dmidecode
yang mengeluarkan informasi per soket. Dalam hal sistem server yang tercantum di atas, kami mengharapkan untuk melihat 8 core per socket dan 16 thread per socket:
$ 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
The lscpu
perintah memiliki sejumlah pilihan yang berguna yang Anda mungkin ingin memeriksa, misalnya:
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
Lihat man lscpu
detailnya.
Singkatnya:
- Anda harus mengetahui soket, inti dan benang
- Anda harus berhati-hati dengan istilah CPU karena ini berarti hal yang berbeda dalam konteks yang berbeda