リソース配分モデルについて

次の配分モデルでは、cgroups v2で使用するリソースを配分する際に制御または規制を実装する方法について説明します。

重み

このモデルでは、すべての制御グループの重みが合計されます。各グループは、合計の重みに対するグループの重みの比率に基づいて、リソースの一部を受け取ります。

10個の制御グループについて考えてみます。それぞれの重みは100で、合計は1000です。この場合、各グループは、指定されたリソースの10分の1を使用できます。

通常、重みはステートレス・リソースの配分に使用されます。このリソースを適用するには、CPUWeightオプションが使用されます。

制限

このモデルでは、グループはリソースの構成量まで使用できます。プロセスのメモリー使用量などのリソースが制限を超えた場合、カーネルはメモリー不足(oom)メッセージでプロセスを停止することがあります。

また、サブグループの制限の合計が親グループの制限を超えることができるように、リソースをオーバーコミットすることもできます。オーバーコミットメントでは、すべてのサブグループのリソースが同時に制限に達する可能性が高いとはかぎりません。

この配分モデルを実装するには、MemoryMaxオプションがよく使用されます。

保護

このモデルでは、グループに保護された境界が割り当てられます。グループのリソース使用量が保護された量に収まっている場合、カーネルは、同じリソースについて競合する他のグループのためにリソースの使用を奪うことはできません。このモデルでは、リソースのオーバーコミットが許可されます。

このモデルを実装するには、MemoryLowオプションがよく使用されます。

割当て

このモデルでは、リアルタイム予算など、有限タイプのリソースの使用に対して特定の絶対金額が割り当てられます。