cgroup v1(しーぐるーぷ ぶいーいち)
最終更新:2026/4/28
cgroup v1は、Linuxカーネルにおけるリソース制限・管理の機能の一つであり、プロセスグループに対してCPU、メモリ、I/Oなどのリソース使用量を制御する。
ポイント
cgroup v1は、システム全体の安定性と公平性を保つために、コンテナや仮想マシンなどのリソースを効率的に管理する上で重要な役割を果たす。cgroup v2が登場し、徐々に移行が進んでいる。
cgroup v1の概要
cgroup v1(control groups version 1)は、Linuxカーネルに組み込まれたリソース管理機能です。プロセスグループに対して、CPU時間、メモリ使用量、ディスクI/O、ネットワーク帯域幅などのリソース使用量を制限したり、優先順位を付けたりすることができます。これにより、特定のプロセスがシステム全体のリソースを独占することを防ぎ、システムの安定性と公平性を保つことができます。
cgroup v1の仕組み
cgroup v1は、階層的な構造を持っています。ルートcgroupから始まり、そこからサブcgroupを再帰的に作成することができます。各cgroupは、割り当てられたリソース制限と、そのcgroupに含まれるプロセスグループを管理します。リソース制限は、cgroupファイルシステムを通じて設定されます。このファイルシステムは、/sys/fs/cgroup以下にマウントされます。
cgroup v1の主な機能
- CPU制限: プロセスグループが使用できるCPU時間を制限します。
- メモリ制限: プロセスグループが使用できるメモリ量を制限します。
- I/O制限: プロセスグループがディスクI/Oを実行できる速度を制限します。
- ネットワーク制限: プロセスグループが使用できるネットワーク帯域幅を制限します。
- プロセス優先度: プロセスグループの優先度を設定します。
cgroup v1の利用例
- コンテナ: DockerやKubernetesなどのコンテナ技術は、cgroup v1を使用してコンテナのリソースを制限します。
- 仮想マシン: 仮想マシンも、cgroup v1を使用してリソースを制限することができます。
- バッチ処理: バッチ処理ジョブの実行時間を制限し、システムへの影響を最小限に抑えることができます。
cgroup v2への移行
cgroup v1は、設計上の制約や複雑さから、cgroup v2が登場しました。cgroup v2は、よりシンプルで柔軟な設計であり、パフォーマンスの向上も期待されています。現在、多くのディストリビューションでcgroup v2がデフォルトで使用されるようになり、cgroup v1からcgroup v2への移行が進んでいます。