第25章 コントロールグループについて
コントロールグループ (cgroups
) カーネル機能を使用すると、アプリケーションのリソース使用状況を制御して、より効率的に使用できます。
cgroups
は、以下のタスクで使用できます。
- システムリソース割り当ての制限を設定します。
- 特定のプロセスへのハードウェアリソースの割り当てにおける優先順位を設定する。
- 特定のプロセスをハードウェアリソースの取得から分離する。
25.1. コントロールグループの概要
コントロールグループ の Linux カーネル機能を使用して、プロセスを階層的に順序付けされたグループ (cgroups
) に編成できます。階層 (コントロールグループツリー) は、デフォルトで /sys/fs/cgroup/
ディレクトリーにマウントされている cgroups
仮想ファイルシステムに構造を提供して定義します。
systemd
サービスマネージャーは、cgroups
を使用して、管理するすべてのユニットとサービスを整理します。/sys/fs/cgroup/
ディレクトリーのサブディレクトリーを作成および削除することで、cgroups
の階層を手動で管理できます。
続いて、カーネルのリソースコントローラーは、cgroups
内のプロセスのシステムリソースを制限、優先順位付け、または割り当てることで、これらのプロセスの動作を変更します。これらのリソースには以下が含まれます。
- CPU 時間
- メモリー
- ネットワーク帯域幅
- これらのリソースの組み合わせ
cgroups
の主なユースケースは、システムプロセスを集約し、アプリケーションとユーザー間でハードウェアリソースを分割することです。これにより、環境の効率、安定性、およびセキュリティーを強化できます。
- コントロールグループ 1
コントロールグループバージョン 1 (
cgroups-v1
) はリソースごとのコントローラー階層を提供します。CPU、メモリー、I/O などのリソースごとに、独自のコントロールグループ階層があります。異なるコントロールグループ階層を組み合わせることで、1 つのコントローラーが別のコントローラーと連携してそれぞれのリソースを管理できるようになります。ただし、2 つのコントローラーが異なるプロセス階層に属している場合、連携が制限されます。cgroups-v1
コントローラーは長期間にわたって開発されたため、コントロールファイルの動作と命名に一貫性がありません。- コントロールグループ 2
Control groups version 2 (
cgroups-v2
) は、すべてのリソースコントローラーがマウントされる単一のコントロールグループ階層を提供します。コントロールファイルの動作と命名は、さまざまなコントローラーにおいて一貫性があります。
RHEL 9 では、デフォルトで cgroups-v2
をマウントして使用します。
関連情報
- カーネルリソースコントローラーの概要
-
cgroups(7)
の man ページ - cgroups-v1
- cgroups-v2