第10章 カーネル
10.1. リソース制御
10.1.1. RHEL 8 で、Control Group v2 がテクノロジーグループとして利用可能
Control Group v2 メカニズムは、統一された階層制御グループです。Control Group v2 は、プロセスを階層的に編成し、制御された設定可能な方法で、階層に従ってシステムリソースを分配します。
以前のバージョンとは異なり、control group v2 には階層が 1 つしかありません。このように階層が単純であるため、Linux カーネルでは次のことが可能になります。
- 所有者のロールに基づいたプロセスの分類
- 複数の階層でポリシーが競合する問題の解消
Control group v2 は、非常に多くのコントローラーに対応します。
CPU コントローラーにより、CPU サイクルの配分が調整されます。このコントローラーには以下が実装されています。
- 通常のスケジューリングポリシーに対する重みおよび絶対帯域幅制限のモデル
- 実時間スケジューリングポリシーに対する絶対帯域幅割り当てモデル
メモリーコントローラーは、メモリー配分を調整します。現在、次の種類のメモリー使用量が追跡されます。
- ユーザー側のメモリー (ページキャッシュと匿名メモリー)
- dentry、inode などのカーネルデータ構造
- TCP ソケットバッファー
- I/O コントローラーは、I/O リソースの配分を制限します。
- Remote Direct Memory Access (RDMA) コントローラーは、一部のプロセスが使用できる、RDMA/IB に固有のリソースを制限します。このプロセスは、RDMA コントローラーによりグループ化されます。
-
プロセス番号コントローラーは、特定の制限後に、コントロールグループが、新しいタスクが
fork()
されない、またはclone()
されないようにできます。 - Writeback コントローラーがメカニズムとして動作します。これは、I/O コントローラーとメモリーコントローラーとの間の矛盾が相殺されます。
上記の情報は、cgroups-v2 オンラインドキュメント に基づいています。ここでは、個別の control group v2 コントローラーに関する詳細を取得できます。