ソフトウェア
上級

cgroups v2 (Control Groups v2)(シーグループスブイツー)

Linux 4.5 (2016) で stable 化したコントロールグループ第2世代。プロセス資源 (CPU/メモリ/I/O/PID) を階層制御、Docker / Kubernetes / systemd の基盤。

0 回閲覧
0 いいね
2026/5/15 更新
関連タグ
Linux
Kernel
cgroups
Container

概要

cgroups v2 (Control Groups version 2) はLinux 4.5 (2016年3月) で stable 化したプロセス資源制御機構の第2世代。Tejun Heo (Facebook) 主導開発、cgroup v1 (2007 Paul Menage 等開発・複数階層で混乱) を単一階層に統合した整理版。プロセスツリーを cgroup に grouping し、CPU / Memory / I/O / Pid Number / Network 等のリソースを階層制御する仕組みで、Docker / Kubernetes / systemd / LXC の基盤技術。

cgroups v1 vs v2

項目cgroups v1 (2007)cgroups v2 (2016)
階層複数 (controller 別)単一 (統一階層)
構造個別マウント/sys/fs/cgroup/
controller 数127 (統合)
PID controllerpidsあり
Memorymemory+ io / cpu 連動
I/Oblkioio (block + iolatency 統合)
プロセス位置各controller 別1 cgroup のみ
Threaded modeなしあり

主要 controllers (v2)

Controller機能
cpuCPU 時間配分 (weight / max)
memoryメモリ制限 (low / high / max / swap)
ioブロックI/O 制限 (weight / latency)
pidsプロセス数制限
cpusetCPU / NUMA 配置
freezerプロセス一時停止
rdmaRDMA リソース
hugetlbHuge Page 制限
miscscarce hw resource (Intel RDT等)

/sys/fs/cgroup/ 構造例

/sys/fs/cgroup/
├── cgroup.controllers
├── cgroup.procs
├── cpu.max
├── memory.max
├── memory.high
├── io.max
├── pids.max
├── system.slice/
│   ├── nginx.service/
│   │   ├── cpu.max
│   │   └── memory.max
│   └── ...
├── user.slice/
│   └── user-1000.slice/
│       └── ...
└── kubepods.slice/
    ├── pod-abc123.slice/
    │   ├── cpu.max
    │   └── memory.max
    └── ...

Docker / Kubernetes 統合

プラットフォームcgroup 採用
Docker (cgroupfs driver)v1 / v2
Docker (systemd driver)systemd 経由
Kubernetes (containerd)v2 推奨 (2024)
Kubernetes (CRI-O)v2
Podmanv2
Systemd .servicev2

メモリ制御の進化

  • memory.max: ハード上限 (超過でOOM-Kill)
  • memory.high: ソフト上限 (超過でリクレイム圧)
  • memory.low: 最小保証
  • memory.swap.max: スワップ制限
  • memory.zswap.max: zswap 圧縮制限
  • memory.pressure: PSI (Pressure Stall Information)

v1 → v2 移行

Distrov2 デフォルト
Fedora31 (2019) 〜
Ubuntu22.04 LTS (2022) 〜
Debian11 Bullseye (2021) 〜
RHEL9 (2022) 〜
Arch Linux2021〜
SUSE15 SP3 (2021) 〜

関連用語との違い

  • vs namespaces: 隔離 (namespace) / 資源制御 (cgroup)
  • vs systemd-slice: systemd は cgroup 上の抽象化レイヤ
  • vs Linux Containers: cgroup は基盤・LXC / Docker は上位

FAQ

Q1: 一般ユーザに影響? A: 直接設定機会少ないが、systemd / Docker / Kubernetes 経由で間接利用。GNOME / KDE の Performance Mode 等もcgroup 経由制御。

Q2: v1 / v2 切替? A: GRUB kernel parameter systemd.unified_cgroup_hierarchy=0 でv1 強制可。一部レガシーアプリの互換性のため。

Q3: PSI とは? A: Pressure Stall Information・cgroup / システム全体で「メモリ / CPU / IO 圧」を統計化。Linux 4.20+。OOM 予兆検知に有効。

この記事について
カテゴリーソフトウェア
難易度上級
作成日2026/5/15