Gearpump 異なるストリーミングアプリケーションのためのリソースの分離

cgroups (control groupsの省略) はプロセスグループのリソース利用(CPU, memory ディスク I/Oなど)を制限し、責任をとり、分離するLinuxカーネルの機能です。Gearpumpでは、cgroupをCPUリソースを管理するために使用します。

CGroup サービスの開始

Cgroups の機能はカーネルのバージョンが2.6.18以上のLinuxによってサポートされます。CGroupを開始する前にSELinuxも無効にするようにしてください。

以下のステップはrootユーザによって実行されると考えられています。

  1. /etc/cgconfig.conf が存在するかどうかを調べます。存在しないバイアは、"yum install libcgroup"を実行してください。

  2. 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
    
  3. リソースの分離を有効にしたGearpumpとアプリケーションを起動するためにユーザ gear に権限を割り当てたい場合は、 /etc/passwd ファイル内のgearのuidとgidをチェックする必要があります。例として500 を取り上げます。

  4. 以下の内容を /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 の箇所は含まれるべきでは無いことに注意してください。

  5. そして、cgroupサービスを開始します

    sudo service cgconfig restart 
    
  6. cpuサブシステムのマウントポイントの下に生成されたgearpump フォルダがあるはずで、その所有者は gear:gearです。

  7. Gearpumpを起動したい各マシーン上で、上で述べられたステップを繰り返します。

Gearpump内でCgroupを有効にします

  1. ユーザ gearで準備されたCGroupを持つマシーンにログインします。

    ssh gear@node
    
  2. 各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 内のグループ名と一致しなければならないことに注意してください。

  3. Gearpumpを起動したい各マシーン上で、上で述べられたステップを繰り返します。

  4. Gearpumpクラスタを開始します。スタンドアローンモードでGearpumpを配備を参照してください

コマンドラインからアプリケーションを起動します

  1. Gearpump配布物があるマシーンにログインします

  2. 各Gearpumpのホームフォルダに入り、${GEARPUMP_HOME}/conf/フォルダの下のgear.confを編集します

    gearpump.cgroup.cpu-core-limit-per-executor = ${your_preferred_int_num}
    

    この設定はexecutorあたり利用可能なCPUコアの数であり、-1は制限が無いことを意味します。

  3. アプリケーションをサブミットする

    bin/gear app -jar examples/sol-${version}-assembly.jar -streamProducer 10 -streamProcessor 10 
    
  4. そして、cpuの使用率を監視するためにtop コマンドを実行することができます。

ダッシュボードからアプリケーションを起動します

ダッシュボードからアプリケーションをサブミットしたい場合は、デフォルトではgearpump.cgroup.cpu-core-limit-per-executor がワーカーの設定から継承されます。それを上書くために独自のconfファイルを用意することができます。

制限事項

Windows と Mac OS X はCGroupをサポートしないため、たとえそれを有効にしてもリソースの分離は動作しないでしょう。1つのexecutorのcpu使用率についてどのような制限も無いでしょう。

TOP
inserted by FC2 system