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