読み方 : シーグループス
cgroups【control groups】
概要

通常、コンピュータ上では複数のプロセス(実行中のプログラム)が同時に動作しており、特定のプロセスがリソースを過剰に消費すると他のプロセスの動作に悪影響を及ぼすことがある。以前のLinuxではプロセス単位でのリソース制御に限界があり、複数のプロセスをまとめて管理する手段が乏しかった。
cgroupsでは、プロセスを「コントロールグループ」と呼ばれる階層的なグループに分類し、グループごとにリソースの上限や優先度を設定することができる。例えば、あるグループに対してCPU使用率を全体の30%以内に制限したり、使用できるメモリの上限を設けたりすることができる。設定はLinuxの仮想ファイルシステムである「cgroupfs」を通じて行われ、ファイルの読み書きという直感的な操作で管理できる。
cgroupsが特に重要な役割を担っているのが、コンテナ型仮想化の分野である。DockerやKubernetesをはじめとするコンテナ技術は、cgroupsを活用してコンテナごとのリソース使用量を管理している。複数のコンテナが同一ホスト上で動作する環境でも、特定のコンテナがリソースを独占して他のコンテナに影響を与える事態を防ぐことができる。
cgroupsは米グーグル(Google)社のエンジニア、ロヒット・セス(Rohit Seth)氏が開発を始め、2008年にLinuxカーネルに正式に組み込まれた。2016年に仕様を刷新した「cgroups v2」が開発され、初期のものは「cgroups v1」と呼ばれるようになった。v1とv2を同じシステム内に共存させる「ハイブリッドモード」も用意されている。