#概要
どうも。はにです。あまり専門ではないのでわかりませんが、双極性障害なんじゃないかと思いこむこの頃です。
さて、私はあるサービスを運用しています。ところが、現在はサービスのプロセスが仮想マシン上でぐちゃぐちゃして稼動しているのでいろいろな意味でよくないです。だから整理する方法を考えています。
んで、見つけたのが『rcon』。
プロセスのi/oやCPUを制限できるらしいです。メンテされておらず、動くか怪しいので検証してみます。
#環境
Ubuntu 16.04
#導入
apt install rake bison flex libpam-dev
git clone https://github.com/matsumotory/rcon
cd rcon
#ビルド
rake
ビルドは多少待たされます。
終わると
mruby/bin/rcon
にビルド物はできています。
(信用できれば、使ってどうぞ。http://haniokasai.com/file/binary/rcon__linux-x86_64.tgz)
#テスト
./rcon --help
Usage: rcon [options] --user username --command "yes >> /dev/null"
--cpu VAL
default: 30 (%)
--memory VAL
default: 512000000 (MiB)
--read VAL
default: 10000000 (Byte/sec)
--write VAL
default: 10000000 (Byte/sec)
--group VAL
default: rcon
--dev VAL
default: 8:0
--pids VAL
default: nothing
--version
./rcon --user username --command "yes >> /dev/null" --cpu 10
top
#####
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13511 username 20 0 8300 812 744 R 9.9 0.0 0:12.08 yes
#####
ここで重要なポイントがあります。--userで必ずLinuxユーザーを指定しないといけないのです。ですから、rootじゃないと動かないかと、、、。
ちゃんと機能してますね。動かしてる間、±0.6%でおさまってました。
sudo ./rcon --user username --command "dd if=/dev/zero of=tempfile bs=1M count=1000 oflag=direct" --write 1024000
iotopは壊れてた。
結局こればかりは動作してるか確認するすべがなく、、、。
#まとめ
本記事では、プロセスに各種制限を書けることが容易であることを示した。
自らリソース制限をかけられないソフトにとっては役立つだろうし、cpulimitに比べて圧倒的に柔軟性もあるし、利用価値が高い。なにかホリホリしてる人にいいかもしれない、例えばminerdとか。