GNU/Linux >> Belajar Linux >  >> Linux

Cara Membatasi Penggunaan CPU Suatu Proses Di Linux

Terkadang, proses tertentu mungkin menghabiskan lebih banyak penggunaan CPU, dan memengaruhi kinerja keseluruhan sistem. Karena proses tertentu menghabiskan lebih banyak CPU, Anda tidak dapat melakukan tugas lain. Anda harus menunggu proses itu selesai sebelum memulai tugas baru. Untungnya, ini sekarang dapat diselesaikan dengan utilitas berguna yang disebut CPULimit . Seperti namanya, CPULimit membatasi penggunaan CPU dari suatu proses. Ini cukup berguna untuk mengontrol pekerjaan batch, ketika Anda tidak ingin mereka menggunakan lebih banyak penggunaan CPU. Tujuan utama CPULimit adalah mencegah proses berjalan lebih dari rasio waktu yang ditentukan. Itu tidak mengubah bagus nilai atau pengaturan prioritas penjadwalan lainnya, tetapi penggunaan CPU yang sebenarnya. Juga, ia mampu menyesuaikan diri dengan beban sistem secara keseluruhan, secara dinamis dan cepat. Ini akan bekerja pada sebagian besar distribusi mirip Unix. Dalam panduan singkat ini, kita akan melihat cara membatasi penggunaan CPU dari suatu proses di Linux.

Instal CPULimit

CPULimit tersedia di sebagian besar repositori default distribusi mirip Unix. Anda dapat menginstalnya menggunakan manajer paket default di masing-masing distribusi Linux seperti yang ditunjukkan di bawah ini.

Di Arch Linux dan turunannya:

$ sudo pacman -S cpulimit

Di Debian, Ubuntu, Linux Mint:

$ sudo apt-get install cpulimit

Di RHEL, CentOS, Fedora:

Aktifkan repositori EPEL terlebih dahulu.

$ sudo yum install epel-release

Dan kemudian, instal cpuclimit menggunakan perintah:

$ sudo yum install cpulimit

Atau,

$ sudo dnf install cpulimit

Di SUSE/openSUSE:

$ sudo zypper install cpulimit

Batasi Penggunaan CPU Pada Proses Di Linux menggunakan CPULimit

Mari kita jalankan program yang menghabiskan lebih banyak penggunaan CPU. Perintah berikut harus dijalankan sebagai pengguna root.

Buat file bernama highcpu.sh .

$ vi highcpu.sh

Tambahkan konten berikut.

#!/bin/bash
while :; do :; done;

Tekan tombol ESC dan ketik :wq untuk menyimpan dan menutup file. Program singkat ini akan berulang tanpa henti dan menghabiskan penggunaan CPU secara maksimal. Jadi, saya sarankan Anda untuk mengujinya di mesin virtual.

Jadikan file ini dapat dieksekusi:

$ chmod +x highcpu.sh

Kemudian, jalankan proses di latar belakang menggunakan perintah:

$ ./highcpu.sh &

Contoh keluaran:

[1] 2331

Di sini 2331 adalah PID dari proses di atas.

Untuk melihat berapa banyak CPU yang digunakan, gunakan perintah "top".

$ top

Contoh keluaran:

top - 17:16:34 up 10 min, 2 users, load average: 1.12, 0.53, 0.26
Tasks: 87 total, 4 running, 83 sleeping, 0 stopped, 0 zombie
%Cpu(s): 91.9 us, 2.7 sy, 5.4 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 630108 total, 274868 free, 85904 used, 269336 buff/cache
KiB Swap: 1343484 total, 1343484 free, 0 used. 428172 avail Mem

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
 2331 root 20 0 113120 1184 1004 R 97.7 0.2 2:40.91 highcpu.sh 
 2412 root 39 19 244516 11020 4496 R 1.3 1.7 0:00.11 dnf 
 10 root 20 0 0 0 0 S 0.3 0.0 0:00.68 rcu_sched 
 1 root 20 0 43900 6480 3900 S 0.0 1.0 0:01.61 systemd 
 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 
 3 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0 
 6 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u2:0 
 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 
 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 
 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 
 11 root 20 0 0 0 0 R 0.0 0.0 0:00.38 rcuos/0 
 12 root rt 0 0 0 0 S 0.0 0.0 0:00.02 watchdog/0 
 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 
 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 
 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 
 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf 
 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeb

Seperti yang Anda lihat pada output di atas, proses highcpu.sh menghabiskan lebih dari 97% penggunaan CPU. Karena menghabiskan lebih banyak penggunaan CPU, cukup sulit untuk menjalankan tugas lain. Setelah beberapa menit, sistem Anda mungkin hang atau macet. Di sinilah CPULimt membantu.

Sekarang, mari kita batasi penggunaan CPU dari proses ini menggunakan alat CPULimit. Misalnya, kami akan membatasi proses ini dengan PID hingga 30% CPU.

Untuk melakukannya, jalankan:

$ cpulimit -l 30 -p 2331 &

Di sini,

  • "-l 30" flag membatasi proses hingga 30%.
  • "-p 2331" adalah PID dari highcpu.sh

Sekarang, mari kita periksa kembali penggunaan CPU dari proses di atas menggunakan perintah:

$ top

Contoh keluaran:

top - 17:29:16 up 5 min, 1 user, load average: 0.61, 0.57, 0.27
Tasks: 86 total, 2 running, 83 sleeping, 1 stopped, 0 zombie
%Cpu(s): 7.2 us, 0.0 sy, 0.0 ni, 92.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 630108 total, 435348 free, 78052 used, 116708 buff/cache
KiB Swap: 1343484 total, 1343484 free, 0 used. 442040 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
 2331 root 20 0 113120 1180 1004 T 29.7 0.2 3:36.97 highcpu.sh 
 2334 root 9 -11 4324 692 572 S 1.7 0.1 0:00.47 cpulimit 
 1 root 20 0 43900 6480 3900 S 0.3 1.0 0:01.65 systemd 
 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 
 3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 
 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 
 6 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kworker/u2:0 
 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 
 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 
 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 
 10 root 20 0 0 0 0 S 0.0 0.0 0:00.44 rcu_sched 
 11 root 20 0 0 0 0 R 0.0 0.0 0:00.37 rcuos/0 
 12 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/0 
 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 
 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 
 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 
 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf

Seperti yang Anda lihat pada output di atas, penggunaan CPU dari highcpu.sh telah turun menjadi 29,7% , yang sangat dekat dengan 30%. Sekarang, Anda dapat memiliki lebih banyak sumber daya CPU untuk menjalankan proses lain dengan bebas.

Kami telah melihat bagaimana membatasi proses dengan PID. Atau, kita dapat menjalankan perintah di atas dengan menentukan nama file program yang dapat dieksekusi.

Misalnya, perintah di atas adalah:

$ cpulimit -l 30 ./highcpu.sh &

Demikian pula, Anda dapat memulai proses angka apa pun di latar belakang dan membatasi penggunaan CPU sesuai keinginan.

Anda dapat membawa proses yang berjalan di latar belakang ke latar depan kapan saja menggunakan "fg" perintah:

$ fg

Contoh keluaran:

cpulimit -l 30 -p 2331

Kesimpulan

CPULimit dapat berguna saat Anda menjalankan proses yang menghabiskan lebih banyak penggunaan CPU. Lain kali Jika Anda melihat sebuah program mengkonsumsi lebih banyak penggunaan CPU, temukan PID dari proses menggunakan perintah "top" dan batasi penggunaan CPU ke nilai minimum menggunakan perintah CPULimit seperti dijelaskan di atas. Anda juga dapat menggunakan aplikasi ini untuk menguji kinerja aplikasi di bawah penggunaan CPU yang rendah.


Linux
  1. Membatasi penggunaan memori proses/CPU di linux

  2. Cara menemukan Proses mana yang menyebabkan penggunaan CPU Tinggi

  3. Bagaimana penggunaan memori dilaporkan di Linux?

  1. Cara mematikan proses zombie di Linux

  2. Linux – Batasi Penggunaan Memori Untuk Proses Linux Tunggal?

  3. Bagaimana cara membatasi penggunaan memori berdasarkan aplikasi di linux?

  1. Linux – Bagaimana Membatasi Proses Ke Satu Cpu Core Di Linux??

  2. Ambil penggunaan CPU dan penggunaan memori dari satu proses di Linux?

  3. Bagaimana cara menghitung penggunaan CPU dari suatu proses oleh PID di Linux dari C?