2.5. コントロールグループの作成

cgcreate コマンドを使用して cgroups を作成します。cgcreate の構文は以下のとおりです。
cgcreate -t uid:gid -a uid:gid -g subsystems:path
ここで、
  • -t (オプション) は、ユーザー (ユーザー ID、uid) とグループ (グループ ID、gid) を指定して、この cgroup の tasks 疑似ファイルを所有するためのオプションです。このユーザーは cgroup にタスクを追加することができます。

    注記

    cgroup からタスクを削除するには、異なる cgroup に移動するのが唯一の手段である点に注意してください。タスクを移動するには、ユーザーは 移動先の cgroup への書き込みアクセスが必要となります。元の cgroup への書き込みアクセスは重要ではありません。
  • -a (オプション) — ユーザー (ユーザー ID、uid) とグループ (グループ ID、gid) を指定して、このcgroup の tasks 以外の全疑似ファイルを所有するようにします。このユーザーは cgroup 内のタスクが持つシステムリソースへのアクセスを変更できます。
  • -g — cgroup が作成されるべき階層を、それらの階層に関連付けられる、コンマ区切りの subsystems 一覧として指定します。この一覧内のサブシステムが異なる階層にある場合には、それらの各階層内でグループが作成されます。階層の一覧の後には、コロンならびに階層に対して相対的な子グループへの path が続きます。このパスには、階層のマウントポイントを入れないでください。
    たとえば、/cgroup/cpu_and_mem/lab1/ディレクトリ内に配置されている cgroup が単に lab1 という名前である場合でも、1 つのサブシステムに対して階層は 1 つしかないため、そのパスは既に一意に特定されていることになります。また、グループは、cgroup が作成された階層内に存在する全サブシステムによって制御される点にも注意してください。cgcreate コマンドでこれらのサブシステムが指定されていない場合でも変わりません。例2.5「cgcreate の使用方法」 を参照してください。
同じ階層内の cgroup はすべて同じコントローラーを持つため、子グループは親グループと同じコントローラーを持つことになります。

例2.5 cgcreate の使用方法

cpu および memory サブシステムが cpu_and_mem 階層に一緒にマウントされており、かつ net_cls コントローラーが net という名前の別の階層にマウントされているシステムを想定して、以下のコマンドを実行します。
~]# cgcreate -g cpu,net_cls:/test-subgroup
cgcreate コマンドにより、test-subgroup という名前の 2 つのグループを作成します。一方は、cpu_and_mem 階層に、もう一方は net 階層に入ります。 cgcreate コマンドで指定してなくても、cpu_and_mem 階層内の test-subgroup グループは、 memory サブシステムによって制御されます。

その他の方法

cgroup の子を作成するには、mkdir コマンドを使用します:
~]# mkdir /cgroup/hierarchy/name/child_name
例:
~]# mkdir /cgroup/cpuset/lab1/group1