# Dgraphのcgroupsの設定

制御グループ(cgroup)は、CPU時間やシステム・メモリーのようなリソースを特定のプロセスまたはプロセス・グループに割り当てることができる、Linuxカーネル機能です。Sparkが実行されているノードにDgraphをホストする必要がある場合は、cgroupを使用して、利用可能な十分なリソースを確保する必要があります。

警告: DgraphとSparkはどちらもメモリーを消費するプロセスのため、同じノードでこれらをホストすることはどうしても必要な場合を除き、お薦めしません。Dgraphのメモリー消費を設定するために`--memory-limit`フラグを使用できますが、Sparkはこれを感知せず、他のプロセスに関係なく必要な量のメモリーを使用し続けます。

これを実行するには、Hadoopでcgroupを有効にし、YARNがCPUの割合と消費できるメモリー量を制限できるcgroupを作成する必要があります。次に、Dgraphのcgroupを別に作成し、適切な容量のメモリーとスワップ領域を割り当てます。

cgroupを設定するには、次の手順を実行します。

1. システムに現在、`libcgroup`パッケージがない場合は、rootとしてこれをインストールします。
   これにより/etc/cgconfig.confが作成され、これでcgroupを構成します。
2. 自動的に起動させるには、`cgconfig`サービスを有効にします。

       chkconfig cgconfig on

3. YARNのcgroupを作成します。これはHadoop内で実行する必要があります。手順については、Hadoopディストリビューションのドキュメントを参照してください。
   YARNのcgroupは、すべてのYARNコンテナに割り当てられるCPUおよびメモリー量を制限します。設定する適切な制限値は、ご使用のシステムおよび処理するデータ量によって異なります。最小限、次の容量をDgraph用に予約する必要があります。
   - 10 GBのRAM
   - 2 CPUコア
   YARNが使用できるCPUコアの数は、パーセントで指定する必要があります。たとえば4コア・マシンの場合、YARNが使用できるのは2コアだけ、つまり50%です。8コアの場合、YARNは最大4コア、つまり75%使用できます。この量を設定する際には、より多くのコアをDgraphに割り当てればパフォーマンスが大幅に上がることを覚えておいてください。
4. 次をcgconfig.confに追加して、Dgraphのcgroupを作成します。

       # Create a Dgraph cgroup named "dgraph"
       group dgraph {
           # Specify which users can edit this group
           perm {
               admin {
                   uid = $BDD_USER;
               }
               # Specify which users can add tasks for this group
               task {
                   uid = $BDD_USER;
               }
           }
           # Set the memory and swap limits for this group
           memory {
               # Set memory limit to 10GB
               memory.limit_in_bytes = 10000000000;

               # Set memory + swap limit to 12GB
               memory.memsw.limit_in_bytes = 12000000000;
           }
       }

   `$BDD_USER`は`bdd`ユーザーの名前です。
   注意: 前述の`memory.limit_in_bytes`および`memory.memsw.limit_in_bytes`に指定した値は絶対的な最小の所要量です。可能であれば、より高い値を使用してください。
5. `cfconfig`を再起動して変更を有効にします。