- blogs:
- cles::blog
2014/03/12

cpulimit でプロセスの cpu 使用量を制限する

linux で例えばプロセスのメモリの使用量を制限したい場合には ulimit*1なんかがすぐに思い浮かびますが、 CPU の使用量を制限したい場合には不適です。
一応 -t オプションがありますが、これは「CPU 時間の最大量 (秒単位) 」なので、例えばファイル圧縮などを CPU を 10% だけ使ってのんびりやりたいという場合には使えません。
これまではプロセスの相対的な優先度を変化させる nice*2や、 I/O の優先度を変化させる ionice を使っていたのですが、CPU の使用割合を制御できる cpulimit というコマンドをみつけたのでメモ。
The control of the used CPU amount is done sending SIGSTOP and SIGCONT POSIX signals to processes.
どんな仕組みなのかとおもったら、負荷に合わせて SIGSTOP と SIGCONT でプロセスを止めたり再開させたりという意外と単純な仕組みで実装されていてちょっと驚きました。
要はシェル上で Ctrl-Z を押してプロセスを止めたり、fg を使って再開させたりということを自動的に行ってくれる仕組みだと考えれば分かりやすいでしょうか。
† インストールは make して bin にコピーで
構造が単純なのでインストールもシンプルです。
wget https://github.com/opsengine/cpulimit/archive/master.zip -O cpulimit-master.zip
unzip cpulimit-master.zip
cd cpulimit-master
make
cp src/cpulimit /usr/local/bin
使い方は hogehoge というコマンドを 10% で制限したい場合は上段のような記述で実現できます。
下段は既に __PID__ で起動しているプロセスの CPU 使用率を制限します。
cpulimit -l 10 hogehoge
cpulimit -z -l 50 -p __PID__
シグナルだから既に起動しているプロセスでも問題ないわけですね。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6573
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112029)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110663)
3 . 年次の人間ドックへ(110290)
4 . 2023 年分の確定申告完了!(1つめ)(109828)
5 . 三菱鉛筆がラミーを買収(109737)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110663)
3 . 年次の人間ドックへ(110290)
4 . 2023 年分の確定申告完了!(1つめ)(109828)
5 . 三菱鉛筆がラミーを買収(109737)
cles::blogについて
Referrers