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