弊社のmatsumotoryさんが作られたツールrconを試してみました。
http://hb.matsumoto-r.jp/entry/2015/12/02/133448
cgroupを利用したワンバイナリのツールで、IOやCPU、メモリーなどのリソースを制限できます。
cgroupは過去に検証したことがあったのですが、便利だけど、やはり手間がかかるイメージでした。
しかしrconはLinuxコマンドのように扱えるので、便利そうだと思い試してみました。
試した環境
CentOS6.7
Vagrant
Ruby2.2.3
事前に入れておくと良いパッケージ
私の環境はCentOSのminimal isoを利用したイメージだったので、色々パッケージが不足してました。最低限下記は必要かと思われます。
$ yum install libcgroup gcc zlib zlib-devel bison autoconf aclocal automake c++ gcc-c++ flex pam pam-devel
導入
導入については、README.mdを見ればすぐに分かるのですが、rakeを使ってビルドすれば、OKです。
README通りにやってみた
$ yes > /dev/null
yesコマンドを実行すると、そのままCPUが100%食われてしまいます。
rconを使って、実行してみます。
$ rcon --user inamuu --command "yes > /dev/null" --cpu 10
結果
CPU使用率が10%まで抑えられていました。明確に数字にあらわれるので感動します。
また、下記のように既に実行されているプロセスに対しても制限をかけることができました。
$ yes > /dev/null &
$ rcon --pids "`pgrep yes`" --cpu 10
今回はテストしませんでしたが、ディスクの読み書きもサイズで制限できるため、あきらかに負荷のかかる作業(ファイルを大量に削除するなど)を実施する場合は、大変便利なツールです。
また、リソースへ負荷のかかる作業をする場合は、利用してみようと思います。