GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengetahui jumlah core suatu sistem di Linux?

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.


Linux
  1. cara mengetahui nomor Interrupt/GPIO untuk pin tertentu di linux

  2. Bagaimana cara mengetahui jalur JVM di sistem Linux?

  3. Bagaimana cara mengetahui bahwa Java diinstal di sistem Linux?

  1. Cara mengkonfigurasi Virtualisasi di Redhat Linux

  2. Cara Mengatur atau Mengubah Nama Host Sistem di Linux

  3. Linux:bagaimana cara mengetahui proses mana yang disematkan ke inti mana?

  1. Cara Menambah Nomor Disk Inode di Linux

  2. Cara Mengubah Nama Host di Linux

  3. Di Linux, bagaimana cara mengetahui berapa inti mesin yang aktif?