Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.6. コントロールグループへのプロセスの移動

cgclassify コマンドを実行して、プロセスを cgroup に移動します。
~]# cgclassify -g controllers:path_to_cgroup pidlist
各オプションについての説明は以下のとおりです。
  • コントローラーは、リソースコントローラーのカンマ区切りリストまたは /* で、利用可能なすべてのサブシステムに関連する階層でプロセスを起動する /* です。同じ名前の cgroups が複数ある場合、-g オプションはそれらの各グループ内のプロセスを移動します。
  • path_to_cgroup は、階層内の cgroup へのパスです。
  • pidlist は、プロセス識別子 (PID)のスペース区切りリストです。
-g オプションが指定されていない場合、cgclassify は自動的に /etc/cgrules.conf を検索し、最初に適用可能な設定行を使用します。この行に応じて、cgclassify が、プロセスを移動させる階層と cgroups を決定します。移行を成功させるには、宛先の階層が必要です。/etc/cgrules.conf で指定されるサブシステムは、/etc/cgconfig.conf の対応する階層に対して適切に設定される必要があります。
pid の前に --sticky オプションを追加して、同じ cgroup に子プロセスを保持することもできます。このオプションを設定しておらず、cgred サービスが実行されている場合には、/etc/cgrules.conf にある設定に基づいて、子プロセスが cgroups に割り当てられます。ただし、プロセス自体は起動した cgroup に残ります。
/etc/cgrules.conf ファイルに設定されているパラメーターに従って、cgred サービス (cgrulesengd サービスの起動)を使用して、タスクを cgroups に移動することもできます。cgred のみを使用して、手動で割り当てられたコントローラーを管理します。/etc/cgrules.conf ファイルのエントリーは、以下の 2 つの形式のいずれかになります。
  • user subsystems control_group;
  • user:command subsystems control_group.
以下に例を示します。
maria			net_prio		/usergroup/staff
このエントリーは、/usergroup/staff cgroup に指定されたパラメーターに従って devices サブシステムにアクセスするように指定します。特定のコマンドと特定の cgroups を関連付けるには、以下のように command パラメーターを追加します。
maria:ftp		devices		/usergroup/staff/ftp
このエントリーは、namedmariaftp コマンドを使用する場合に、このプロセスは、devices サブシステムが含まれる階層の /usergroup/staff/ftp cgroup に自動的に移動します。ただし、このデーモンは、適切な条件が満たされた後にのみ、プロセスを cgroup に移動します。したがって、ftp プロセスは、間違ったグループで短時間実行することができます。さらに、プロセスが誤ったグループに子を迅速に生成した場合に、これらの子が移動されない可能性があります。
/etc/cgrules.conf ファイルのエントリーには、以下の追加表記法を含めることができます。
  • @ - user のプレフィックスが付けられている場合、個別ユーザーではなくグループを指定します。たとえば、@adminsadmins グループのすべてのユーザーです。
  • \* — represents "all".たとえば、subsystem フィールドの\* はすべてのサブシステムを表します。
  • %: 上記の行の項目と同じ項目を表します。以下に例を示します。
    @adminstaff	net_prio   /admingroup
    @labstaff	%	  %