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