2.9.2. root コントロールグループ内のプロセスの振る舞い
blkio
および cpu
の特定の設定オプションは、root cgroup 内で実行中のプロセス (タスク) に影響を及ぼします。これは、サブグループ内で実行中のプロセスの場合とは方法が異なります。以下の例を検討してください。
- root グループ下に 2 つのサブグループを作成します:
/rootgroup/red/
および/rootgroup/blue/
- 各サブグループおよび root グループで
cpu.shares
設定オプションを定義し、1
に指定します。
上記で設定したシナリオでは、各グループにプロセスを 1 つずつ配置すると (
/rootgroup/tasks
、/rootgroup/red/tasks
、および /rootgroup/blue/tasks
に 1 タスク)、CPU を 33.33% 消費します。
/rootgroup/
process: 33.33%/rootgroup/blue/
process: 33.33%/rootgroup/red/
process: 33.33%
サブグループ
blue
および red
にその他のプロセスを配置すると、その特定のサブグループに割り当てられている 33.33% の CPU は、そのサブグループ内の複数のプロセス間で分割されます。
しかし、複数のプロセスが root グループに配置されると、 CPU プロセスはグループ別ではなくプロセス別に分割されます。たとえば、
/rootgroup/
に 3 つのプロセス、/rootgroup/red/
に 1 つのプロセス、/rootgroup/blue/
に 1 つのプロセスがあり、全グループで cpu.shares
オプションが 1
に設定されている場合、CPU リソースは以下のように分配されます。
/rootgroup/
processes: 20% + 20% + 20%/rootgroup/blue/
process: 20%/rootgroup/red/
process: 20%
したがって、使用可能なリソースをウェイトまたは配分に基づいて分配する
blkio
および cpu
設定オプション (例: cpu.shares
、blkio.weight
など) を使用する場合には、全プロセスを root グループから特定のサブグループに移動することを推奨します。root グループから特定のサブグループに全タスクを移動するには、以下のコマンドを使用することができます。
rootgroup]#cat tasks >> red/tasks
rootgroup]#echo > tasks