Saya hanya ingin tahu bagaimana saya bisa mencari tahu di bash berapa banyak core CPU yang sekarang digunakan pengguna di Linux Server?
Saya mengirimkan cukup banyak pekerjaan latar belakang ke server, jadi saya ingin menulis skrip bash untuk memeriksa sebelum saya mengirimkan pekerjaan jika pekerjaan yang sedang berjalan (proses) yang saya kirimkan terlalu banyak, karena saya harus membiarkan yang lain pengguna memiliki cukup inti untuk digunakan untuk pekerjaan mereka. Saya ingin tahu perintah bash apa yang bisa memberi tahu saya berapa core yang digunakan oleh pekerjaan saya sekarang.
Terima kasih dan salam!
Saya tidak tahu apakah itu membantu, tetapi Anda dapat menggunakan
mpstat
utilitas untuk mendapatkan gangguan penggunaan CPU oleh prosesor individu (atau inti). Sebagai contoh:Dalam contoh ini, Anda dapat melihat bahwa CPU
0
,1
dan6
melakukan lebih banyak pekerjaan daripada sisa dari mereka. Kadang-kadang Anda akan melihat bahwa satu CPU dekat (atau pada) 100% sementara yang lain nol. Ini bisa menjadi indikator program (atau bagian dari program) yang single-threaded dan hanya dapat menggunakan CPU tunggal pada suatu waktu.Untuk menginstal
mpstat
pada sistem Fedora, RHEL, atau CentOS, gunakanyum install sysstat
.sumber
# aptitude search mpstat #
.aptitude search systat
saja.sysstat
di Debian dan di Ubuntu . Saya berharap sebagian besar distribusi yang diturunkan dari Debian menggunakan nama paket yang sama. Pada distribusi yang diturunkan dari Debian, mulailah denganapt-cache search --full mpstat
.Kecuali secara eksplisit dikonfigurasikan untuk tidak (mis. Menyematkan proses ke CPU tertentu), semua core dapat diasumsikan sedang digunakan setiap saat. Penjadwal akan mengalokasikan proses inti yang tersedia berikutnya. Contohnya, "System Monitor" (bagian dari GNOME) menunjukkan beban saya hampir sama di semua 4 inti mesin saya.
sumber
Jadi Anda akan melihat ada tanggapan di sini yang akan memberi tahu Anda bagaimana inti Anda digunakan.
NAMUN - ini tidak benar-benar melakukan Anda layanan. Anda telah membuat asumsi dasar yang tidak berlaku - bahwa pekerjaan Anda akan cenderung untuk mengelompokkan diri menjadi beberapa bagian dari inti.
Alih-alih, pekerjaan Anda akan tersebar di seluruh inti, kecuali jika Anda menerapkan sesuatu yang membuat mereka "tetap". (Catatan: Saya tidak merekomendasikan itu; hanya mengatakan, "kecuali")
Inilah strategi alternatif: Identifikasi untuk sistem khusus Anda apa tingkat LOAD ketika Anda merasa "dapat diterima" bagi pengguna lain untuk menambahkan lebih banyak pekerjaan. Kemudian, buat sesuatu yang hanya mengirimkan pekerjaan latar belakang baru ketika level beban di bawah batas itu.
Dengan begitu, solusinya akan menjadi core-count-independent, lebih portable, lebih fleksibel, dan lebih mudah untuk "tweak" juga.
sumber
Jika Anda ingin melakukan ini agar berfungsi di linux dan OS X, Anda dapat melakukannya:
sumber
Anda bisa mendapatkan perkiraan kasar dengan menjalankan
top
, menekan 'U
' dan menentukan nama pengguna Anda, lalu menambahkan pemanfaatan CPU dari beberapa proses teratas Anda.sumber
top
dapat berjalan dalam mode batch dengan -b switch. Gabungkan dengan -n untuk mendapatkan jumlah iterasi yang Anda butuhkan.top
output atau google untuk melihat apakah seseorang sudah melakukannya. Namun, saya tidak yakin nilainya upaya karena saya pikir saya akan mendapatkan output yang berbeda untuk setiap proses mengingat kecepatan di mana konteks terjadi. Bukankah sistem memuat indikator yang cukup baik? Ini secara efektif memberi tahu Anda berapa banyak core virtual yang diperlukan untuk menangani proses antrian (proses menunggu pada CPU).