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