Bisakah saya membatasi penggunaan CPU pada satu aplikasi?

Jawaban:

16

Hanya sebagai alternatif untuk cpulimit:

Anda dapat memulai clamscan dengan perintah-bagus, mis

nice -n 19 clamscan.

Lihat man nicedetailnya.

Ini TIDAK membatasi CPU, tetapi menurunkan prioritas proses.

Juga ada reniceuntuk mengubah prioritas proses yang berjalan.

Clausi
sumber
2
Sepertinya masih berfungsi memakan banyak cpu ...
Pitto
4
Selama tidak ada proses lain yang membutuhkan cputime, clamscan mendapatkan banyak hal. Tetapi segera setelah proses lain (yang memiliki prioritas lebih tinggi) membutuhkan cputime, clamscan tidak memiliki peluang. cpulimit membatasi cputime absolut, dan batas bagus cputime relatif.
Clausi
2
+1. niceing adalah cara tradisional untuk pergi, dan untuk alasan yang baik.
loevborg
Apakah ada alat untuk menentukan nilai bagus default untuk menjalankan aplikasi tertentu? Lebih disukai alat yang memungkinkan Anda membandingkan semua preset Anda secara berdampingan.
Jonny Asmar
19

Instal cpulimit

sudo apt-get install cpulimit

Ini memberikan berbagai metode membatasi penggunaan CPU dari suatu proses foountuk mengatakan, 20%

  • Dengan proses-namanya: sudo cpulimit -e foo -l 20.

  • Dengan nama jalur absolutnya: sudo cpulimit -P /usr/bin/foo -l 20

  • Dengan PID-nya:

    1. Menemukan PID dari proses: pidof foo. (katakanlah, ini menghasilkan 1881)
    2. sudo cpulimit -p 1881 -l 20
Sid
sumber
Tidak ditemukan proses target ... Mungkin itu karena saya memiliki skrip untuk menjalankan clamscan? i do: sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
Pitto
@ Pitto: Anda telah memasukkan perintah yang salah, /etc/cron.hourly/virusscanbukan proses. Jika Anda perlu membatasi clamscan, jalankan sudo cpulimit -e clamscan -l 15.
Sid
Oh! Baik! Jadi saya harus memulai cpulimit saat startup di rc.local, kan?
Pitto
2
sudotidak diperlukan proses bukanlah proses sistem. Sama seperti catatan
Anwar
Ini akan menjadi solusi yang sangat rapi jika digunakan secara terprogram! Apakah ini mendukung pencarian berbasis pola?
Jonny Asmar
4

Ini akan menjadi komentar atas jawaban Clausi (yang saya percaya adalah yang paling "benar" dari sudut pandang administrasi sistem, menurut saya) tetapi itu berkembang menjadi sesuatu yang terlalu besar untuk masuk ke dalam kotak komentar.

  • Clamscan memiliki jumlah pekerjaan yang tetap untuk dilakukan sehingga membatasinya pada kecepatan tertentu berarti itu hanya akan memakan waktu lebih lama. Ini akan menahan CPU dalam pertentangan lebih lama.

  • Biarkan berjalan secepat mungkin yang berarti Anda menggunakan CPU Anda sepenuhnya. Menjadikannya sangat "bagus" berarti akan membiarkan proses lain melakukan pekerjaan mereka sebelum prosesnya sendiri. Ini berarti jika ada banyak proses sibuk lainnya, ya, itu akan memakan waktu lama untuk melakukan pekerjaannya sendiri tetapi jika tidak ada apa-apa di sana, itu hanya akan memotong beban kerjanya.

Oli
sumber
3

Jika Anda menjalankan clamd dengan systemd, Anda bisa menggunakan CPUQuota opsi.

Edit /lib/systemd/system/clamav-daemon.serviceuntuk memasukkan baris ini di [Service]bagian:

CPUQuota=20%

Kemudian mulai kembali layanan

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon
Keith
sumber