Bagaimana untuk mengetahui jumlah core dari sistem di Linux?
Saya ingin mengetahui berapa banyak core sistem saya punya, jadi saya mencari pertanyaan yang sama di Google. Saya punya beberapa perintah seperti lscpu
perintah.
Ketika saya mencoba perintah ini, itu memberi saya hasil sebagai berikut:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 23
Stepping: 10
CPU MHz: 1998.000
BogoMIPS: 5302.48
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 2048K
NUMA node0 CPU(s): 0-3
Secara khusus, output ini menunjukkan:
- CPU(s): 4
- Inti(s) per socket: 4
- CPU keluarga: 6
Mana yang menunjukkan inti dari sistem Linux?
Apakah ada perintah lain untuk memberitahu jumlah core, atau aku asumsi itu benar-benar salah?
234
12
Untuk mendapatkan gambaran yang lengkap yang anda butuhkan untuk melihat jumlah thread per core, core per soket dan soket. Jika anda mengalikan angka-angka ini anda akan mendapatkan jumlah Cpu pada sistem anda.
Cpu adalah apa yang anda lihat ketika anda menjalankan
htop
(ini tidak sama dengan Cpu fisik).Berikut adalah contoh dari sebuah mesin desktop:
Dan server:
Output dari
nproc
sesuai dengan CPU darilscpu
. Untuk mesin desktop di atas ini harus sesuai dengan 8 CPU(s) yang dilaporkan olehlscpu
:Output dari
/proc/cpuinfo
harus sesuai informasi ini, misalnya di desktop sistem di atas dapat kita lihat ada 8 prosesor (Cpu) dan 4 core (inti id 0-3):The
core cpu
yang dilaporkan oleh/proc/cpuinfo
sesuai denganInti(s) per soket
yang dilaporkan olehlscpu
. Untuk mesin desktop di atas ini harus sesuai dengan 4 Inti(s) per socket dilaporkan oleh lscpu:Untuk secara khusus menjawab pertanyaan anda memberitahu anda berapa banyak core yang anda miliki dengan mengalikan jumlah core yang anda miliki per socket dengan jumlah soket yang anda miliki.
Misalnya sistem di atas desktop memiliki 4 core:
Sementara server telah 16:
Lain yang berguna utilitas
dmidecode
yang output per socket informasi. Dalam kasus sistem server yang tercantum di atas, kami mengharapkan untuk melihat 8 core per soket dan 16 benang per socket:The
lscpu
perintah memiliki sejumlah pilihan yang berguna yang anda mungkin ingin memeriksa, misalnya:Melihat
manusia lscpu
untuk rincian.Secara ringkas:
Anda harus melihat pada soket dan core per socket. Dalam hal ini anda memiliki 1 CPU fisik (socket) yang memiliki 4 core (core per socket).
Anda bisa mendapatkan informasi ini dengan
nproc(1)
perintahIni tidak memerlukan akses root.
Untuk jawaban yang tidak membingungkan, anda perlu memahami beberapa komputer sederhana konsep arsitektur:
Menjalankan proses ("program") pada sistem linux anda. Setiap proses terdiri dari satu atau lebih benang
Setiap benang terpisah urutan instruksi****. Dua benang yang dapat dieksekusi secara paralel.
Setiap instruksi diberikan ke CPU untuk dieksekusi. CPU memiliki logika bahwa angka keluar apa-bit instruksi maksud dan memutuskan apa yang harus dilakukan dengan itu.
Ada berbagai jenis petunjuk. Keputusan logika di dalam CPU akan mengirimkan instruksi yang berbeda untuk berbeda hardware unit. Misalnya, aritmatika instruksi yang benar-benar dilakukan oleh ALU (arithmetic/logic unit), sementara petunjuk yang memuat/menyimpan dari memori yang dieksekusi oleh semacam memori satuan.
A inti mengacu pada satu set yang sebenarnya eksekusi perangkat keras (yaitu setiap core memiliki ALU, sebuah unit memori, dll...)
Anda dapat memiliki beberapa Cpu yang berbagi satu inti ini disebut hyperthreading.
Ide: thread Yang sedang melakukan aritmatika, sedangkan benang B memuat sesuatu dari memori. Ketika itu's benar, benang A dan B secara efisien dapat berbagi satu inti tanpa mengganggu satu sama lain's cara (menggunakan ALU, B menggunakan memory unit). Tentu saja, kadang-kadang kedua program akan ingin ALU, dan kemudian mereka harus menunggu untuk satu sama lain...
A socket adalah fisik slot pada motherboard yang menjadi chip yang dimasukkan. Chip ini memiliki jumlah core di dalamnya.
Contoh:
OP's contoh:
Contoh lain:
Fisik dua soket, masing-masing berisi sebuah chip dengan 4 core fisik, sehingga total 8 core. Dua benang dapatkan untuk mengeluarkan instruksi untuk masing-masing inti (mesin ini memiliki hyperthreading), yang berarti harus ada dua Cpu yang terpasang untuk masing-masing core, membuat total 8 * 2 = 16 Cpu
Mesin pertama yang dapat mengeksekusi tepatnya empat petunjuk pada waktu tertentu, periode. Kedua mesin dapat menjalankan antara 8 dan 16 petunjuk pada waktu tertentu: 16 akan tercapai hanya bila masing-masing pasangan Cpu mengeksekusi berbagai jenis petunjuk dan agar dapat berbagi core tanpa menunggu.
Anda juga dapat menggunakan perintah
cat /proc/cpuinfo
yang akan menampilkan sepotong data untuk masing-masing core. Masing-masing sepotong dimulai dengan info ini:Core diberi nomor mulai dari 0, jadi jika yang terakhir sepotong kata
prosesor : 3
seperti dalam kasus ini, komputer anda memiliki 4 core.(getconf adalah bagian dari glibc)
Yang's semua yang anda butuhkan. Itu adalah jumlah core online, terlepas jika hyperthreading on atau off.
Cara lain yang mudah.
Saya menemukan cara ini:
Hanya ingin menambahkan beberapa info untuk @htaccess 's jawaban.
Di CentOS 6.x, dmidecode tidak output Core/Thread count info, dan itu benar-benar hal 'CPU' sebagai 'CPU' atau 'Core' di lscpu, tidak 'socket'.
CPU keluarga adalah tidak relevan di sini.
Dalam kasus anda, anda memiliki total 4 core.
Apa yang juga dapat menjadi penting, adalah "Thread(s) per core". Tapi anda harus 1, sehingga tidak dalam kasus anda.
Cara sederhana untuk mengetahui jumlah dari Cpu adalah dengan mengeluarkan perintah berikut: