More than 1 year has passed since last update.

CPU負荷制限

cpulimit というツールがあり、%指定でそのプロセス(子プロセス含む)のCPUの利用率を制限することができます。例えば infinity という単にシングルスレッドで無限ループするプログラムがあったとして、CPU使用率10%で制限するには以下のようにします。

$ cpulimit -l 10 infinity

この10%というのは1論理コアの割合です。100と指定すると論理コア1個分(100%)まで許可することになります。例えば4論理コアの環境ではこの値は0~400まで設定できます。なのでシングルスレッド・シングルプロセスのプログラムであれば100以上指定しても意味はありません。

infinityを2論理コア上で50%で制限すると、以下のようになります。
(↓では論理コア全部を100%として表示してます)
cpulimit.png



既に走っているプロセスに制限をかけることもできます。

$ cpulimit -z -l 50 -p <PID>

この場合、制限中にcpulimit自体が入力待ちになり、CTRL+Cで終了することができます。終了すると制限は解除されます。-z指定は<PID>のプロセスが終了した場合には自分も終了するオプションです。
なお、プロセスを制限するにはそのプロセスに対する権限が必要です。エラーが出たらUSERをチェックしましょう。

githubのプロジェクトページ: opsengine/cpulimit

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.