Apakah pengaturan tingkat yang lebih baik untuk proses merupakan cara yang efektif untuk mengurangi dampaknya pada beban sistem / waktu CPU?

10

Saya memiliki pekerjaan cs rsync yang mendorong beban server dan memicu peringatan monitor. Jika saya mengatur pekerjaan yang akan dijalankan dengan tingkat yang bagus, apakah itu akan secara efektif mengurangi dampaknya pada nilai beban sistem?

Gregg Leventhal
sumber
Untuk rsync, akan lebih efektif menggunakan sakelar untuk mengurangi kompresi, atau membatasi penggunaan bandwidth.
Nemo

Jawaban:

9

Itu tidak akan mengurangi beban Anda.

Itu hanya akan membiarkan proses lain menggunakan waktu CPU lebih sering jika ada pertentangan sumber daya yang mungkin (beberapa proses "bersaing" untuk waktu CPU yang tidak cukup tersedia).

Totor
sumber
9

Mengubah nilai yang bagus tidak akan secara langsung mengurangi beban sistem. Namun itu dapat digunakan untuk menyisakan lebih banyak sumber daya untuk proses yang tersisa, yang saya duga adalah yang Anda inginkan.

Dari http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

Kernel memutuskan berapa banyak waktu prosesor yang diperlukan untuk suatu proses berdasarkan nilai yang bagus. Kisaran nilai bagus yang mungkin adalah: -20 hingga 20. Sebuah proses yang memiliki nilai bagus -20 adalah prioritas yang sangat tinggi. Proses yang memiliki nilai bagus 20 adalah prioritas sangat rendah.

Jadi ya, Anda ingin menjalankan pekerjaan cron di tingkat yang lebih tinggi daripada proses lain jika Anda ingin memastikan bahwa proses lain mendapatkan prioritas.

Untuk melakukan ini, Anda ingin skrip cron Anda dieksekusi seperti ini:

/bin/nice -n 10 /path/to/cron-script

Ini akan menjalankan skrip cron pada tingkat kebaikan meningkat sebesar 10. Anda mungkin ingin menguji sedikit untuk menemukan keseimbangan (pun tidak dimaksudkan) yang bagus antara proses yang tersisa dan waktu eksekusi skrip.

Lihat juga Bagaimana cara kerja yang bagus? dan http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ untuk rincian lebih lanjut.

M_dk
sumber
5

Mengubah tingkat proses yang baik tidak akan memengaruhi nilai beban sistem. Nilai beban sistem adalah panjang rata - rata antrian proses , yang pada dasarnya adalah jumlah proses yang ingin menggunakan CPU.

Jika Anda menjalankan proses yang terikat CPU (rsync tidak, tetapi hanya sebagai contoh), maka itu akan selalu ingin menggunakan waktu CPU setiap kali ada beberapa yang tersedia. Karena selalu ingin dijalankan, itu akan menyumbangkan nilai beban 1,0 ke nilai beban sistem. Tidak masalah apa tingkat proses yang baik, karena panjang rata-rata antrian proses tidak terpengaruh oleh urutan proses dalam antrian proses.

Greg Hewgill
sumber
Ini penting untuk diingat. Jika Anda menjalankan banyak proses es, beban sistem akan terlihat sangat tinggi bahkan jika sebenarnya tidak ada pekerjaan nyata yang diperlambat. Dalam beberapa kasus, load mengungkapkan masalah nyata, yaitu bahwa Linux tidak dapat membiarkan proses es menggunakan semua sumber daya yang sebenarnya bisa mereka gunakan tanpa masalah (semuanya dibiarkan menunggu sebagian besar waktu tanpa hasil).
Nemo
3

Anda mungkin mempertimbangkan 3 cara untuk mengurangi dampak proses pada beban sistem / waktu CPU:

  • Gunakan niceperintah untuk secara manual menurunkan prioritas tugas.
  • Gunakan cpulimitperintah untuk berulang kali menghentikan proses sehingga tidak melebihi batas tertentu.
  • Gunakan Linux built-in control groups, sebuah mekanisme yang memberi tahu scheduler untuk membatasi jumlah sumber daya yang tersedia untuk proses.

Sumber daya

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups

RafaSashi
sumber
Anda pasti ingin menggunakan cgroup untuk menyeimbangkan sumber daya sistem. Yang memungkinkan mempartisi sumber daya seperti yang Anda inginkan (CPU, memori, disk IO, bandwidth disk) dan dalam situasi beban rendah bahkan proses "prioritas rendah" mendapatkan kinerja maksimum tidak seperti trik mode pengguna yang sering berakhir memperlambat proses prioritas rendah sepanjang waktu.
Mikko Rantalainen