Gearpump 異なるストリーミングアプリケーションのためのリソースの分離
cgroups (control groupsの省略) はプロセスグループのリソース利用(CPU, memory ディスク I/Oなど)を制限し、責任をとり、分離するLinuxカーネルの機能です。Gearpumpでは、cgroupをCPUリソースを管理するために使用します。
CGroup サービスの開始
Cgroups の機能はカーネルのバージョンが2.6.18以上のLinuxによってサポートされます。CGroupを開始する前にSELinuxも無効にするようにしてください。
以下のステップはrootユーザによって実行されると考えられています。
-
/etc/cgconfig.conf が存在するかどうかを調べます。存在しないバイアは、"yum install libcgroup"を実行してください。
-
cpu サブシステムがすでにファイルシステムにマウントされているかどうかを見るために、以下のコマンドを実行します。
lssubsys -m
CGroupの各サブシステムはローカルファイルシステム内に対応するマウントファイルパスを持つでしょう。 例えば、以下の出力は、cpu サブシステムがファイルパス
/sys/fs/cgroup/cpu
にマウントされていることを示します。cpu /sys/fs/cgroup/cpu net_cls /sys/fs/cgroup/net_cls blkio /sys/fs/cgroup/blkio perf_event /sys/fs/cgroup/perf_event
-
リソースの分離を有効にしたGearpumpとアプリケーションを起動するためにユーザ gear に権限を割り当てたい場合は、 /etc/passwd ファイル内のgearのuidとgidをチェックする必要があります。例として500 を取り上げます。
-
以下の内容を /etc/cgconfig.conf に追加します
# cpuサブシステムのマウントポイント # システムがすでにマウントしている場合は、この箇所は削除される必要があります mount { cpu = /cgroup/cpu; } # このグループ名 "gearpump" はCGroupの階層ツリーのノードを表します。 # CGroupサービスが開始されている場合は、cpuサブシステムのマウントポイントの下に生成されたフォルダがあるでしょう、 # 名前は "gearpump"です。 group gearpump { perm { task { uid = 500; gid = 500; } admin { uid = 500; gid = 500; } } cpu { } }
ステップ2の出力が、cpu サブシステムがすでにマウントされていることを示す場合、
mount
の箇所は含まれるべきでは無いことに注意してください。 -
そして、cgroupサービスを開始します
sudo service cgconfig restart
-
cpuサブシステムのマウントポイントの下に生成されたgearpump フォルダがあるはずで、その所有者は gear:gearです。
-
Gearpumpを起動したい各マシーン上で、上で述べられたステップを繰り返します。
Gearpump内でCgroupを有効にします
-
ユーザ gearで準備されたCGroupを持つマシーンにログインします。
ssh gear@node
-
各Gearpumpのホームフォルダに入り、
${GEARPUMP_HOME}/conf/
フォルダの下のgear.confを編集しますgearpump.worker.executor-process-launcher = "io.gearpump.cluster.worker.CGroupProcessLauncher" gearpump.cgroup.root = "gearpump"
gearpump.cgroup.root gearpump は /etc/cgconfig.conf 内のグループ名と一致しなければならないことに注意してください。
-
Gearpumpを起動したい各マシーン上で、上で述べられたステップを繰り返します。
-
Gearpumpクラスタを開始します。スタンドアローンモードでGearpumpを配備を参照してください
コマンドラインからアプリケーションを起動します
-
Gearpump配布物があるマシーンにログインします
-
各Gearpumpのホームフォルダに入り、
${GEARPUMP_HOME}/conf/
フォルダの下のgear.confを編集しますgearpump.cgroup.cpu-core-limit-per-executor = ${your_preferred_int_num}
この設定はexecutorあたり利用可能なCPUコアの数であり、-1は制限が無いことを意味します。
-
アプリケーションをサブミットする
bin/gear app -jar examples/sol-${version}-assembly.jar -streamProducer 10 -streamProcessor 10
-
そして、cpuの使用率を監視するために
top
コマンドを実行することができます。
ダッシュボードからアプリケーションを起動します
ダッシュボードからアプリケーションをサブミットしたい場合は、デフォルトではgearpump.cgroup.cpu-core-limit-per-executor
がワーカーの設定から継承されます。それを上書くために独自のconfファイルを用意することができます。
制限事項
Windows と Mac OS X はCGroupをサポートしないため、たとえそれを有効にしてもリソースの分離は動作しないでしょう。1つのexecutorのcpu使用率についてどのような制限も無いでしょう。