Make Tech Easier - Uncomplicating the complicated, making life easier |
数値計算やデータ変換、特定のコンパイル作業など、CPU負荷の高いタイプのアプリケーションやユーティリティを動作させておくと、システム全体の反応が緩慢になることがある。マルチコアでは気にならないことも多いが、シングルコアでは単一のプロセスが原因でユーザインタラクションが緩慢になり、使えたものではない状況になることがある。
こうした場合に利用できるツールcpulimitがHow to Limit The CPU Usage of Any Process in Linux - Make Tech Easierで紹介されている。Linux向けのツールで、特定のプロセスのCPUの使用率を設定した値まで制限するというもの。簡単に扱えるツールとして参考になる。Ubuntuにおけるcpulimitのインストール例は次のとおり。
sudo apt-get install cpulimit
cpulimit(1)の使用例は次のとおり。プロセス番号と、そのプロセスに許可するCPU使用率を指定する。指定できる割合は0から100まで。対象はプロセス番号で指定できるほか、実行ファイル名(-e)やフルパスでの指定(-P)も可能。
sudo cpulimit -p プロセス番号 -l 0から100までの数値
次に簡単な実行例を示す。利用したプラットフォームはUbuntu 10.04。まず動作を確認するため、ループするだけのスクリプトintense.shを用意。intense.shを実行すると、CPU利用率が97%ほどまで上がることを確認する。
ここでcpulimit(1)を使ってintense.shに割り当てるCPU割合を30%に制限する。実行するとcpulimit(1)はフロントエンドで動作し続けるとともに、intense.shはフロントエンドからバックエンドへ移行。CPU使用率は30%前後まで制限されることを確認できる。
cpulimit(1)を終了すると再びintense.shのCPUの使用率が97%前後まで上昇する。
cpulimit(1)を実行することで、フロントエンドで動作していたintense.shはバックエンドプロセスへ移行している。ps(1)コマンドでもその様子が確認できる。この状態でふたたびcpulimit(1)で制限を指定しても、ふたたびその指定した割合へ制限されることを確認できる。
背後で処理を進めておきたいものの、システムの反応が悪くなっては都合が悪い場合など、cpulimit(1)は便利に活用できる。