Apakah mungkin membatasi berapa banyak daya CPU yang dapat diambil oleh suatu proses?

16

Saya bertanya-tanya, apakah ada cara untuk memberi tahu proses berapa banyak daya prosesor yang diperlukan?

Masalahnya adalah saya mengonversi video dengan Arista (pengonversi video) dan saya terganggu oleh kipas yang bekerja sangat gila, ketika saya melihat monitor tugas, ia mengambil alih 92% CPU.

Bisakah saya (entah bagaimana) mengatakannya bahwa hanya butuh 20%?

Terima kasih

setara8
sumber

Jawaban:

20

Ada alat cpulimit (juga ada di debian repo dan harus di distro lain).

Penggunaannya cukup sederhana:

cpulimit -p PID -l MAX_CPU_LEVEL

Anda juga dapat menggunakan nama proses, atau path lengkap ke biner. Detail dapat Anda temukan di halaman manual .

buru-buru
sumber
1
ha-ha :), bekerja sempurna, berkat 1
equivalent8
3
Kode pada URL yang dicatat belum diperbarui dalam beberapa waktu. Grup lain telah mengambilnya dan melanjutkan pengembangan di limitcpu.sf.net .
James Sneeringer
7

Cara lain adalah dengan menggunakan (relatif) antarmuka kernel baru yang disebut cgroups (artikel wikipedia di sini ). Ini memungkinkan kontrol yang lebih baik dari berapa banyak CPU / memori / io / dll proses / pengguna / grup diperbolehkan untuk mengkonsumsi.

Tommy
sumber
0

Meskipun ini mungkin bukan yang Anda cari, Anda dapat menggunakan reniceprogram untuk mengubah prioritas program agar tidak memperlambat aplikasi lain pada sistem. renice -n 20 -p [pid], di mana [pid] diganti dengan ID proses Arista kemungkinan akan menurunkan penggunaan sumber dayanya, dan pasti akan mengurangi perlambatan sistem.

pengulangan
sumber
1
OP tidak mengeluh tentang proses memperlambat aplikasi lain tetapi tentang kipas yang berjalan sangat gila, renicetidak bisa melakukan apa pun terhadap yang terakhir. Paling-paling itu akan memperlambat konverter video tetapi proses yang bersaing (jika ada) akan mempertahankan beban CPU seperti sebelumnya.
jlliagre