Cgroups

Unified hierarchy cgroups, systemd.

cgroups (control groups) とは、プロセスグループのリソース(CPU、メモリ、ディスクI/Oなど)の利用を制限・隔離するLinuxカーネルの機能。"process containers" という名称で Rohit Seth が2006年9月から開発を開始し、2007年に cgroups と名称変更され、2008年1月に Linux カーネル 2.6.24 にマージされた。それ以来、多くの機能とコントローラが追加された。

機能

設計目標の一つは、niceのように一つのプロセスをコントロールすることから OpenVZ や Linux-VServer のようにOSレベルで仮想化することまで、様々なユースケースを統一されたインタフェースで提供することにある。

cgroups は以下の機能を提供している。

利用法

cgroups とは、同じ基準で集められたプロセスの集合である。グループは階層構造を持ち、それぞれのグループは親グループの制限を引き継ぐ。カーネルは複数のコントローラ(サブシステム)に cgroup のインタフェースを通じてアクセスできる。例えば、メモリコントローラはメモリの使用を制限し、ns コントローラはプロセスを個別の名前空間に分離し、cpuacct はCPUの利用量を計算するなど。

cgroups は複数の方法で利用可能である。

名前空間の隔離

技術的には cgroups の一部ではないが、関連する機能として、名前空間の隔離があり、グループ内のプロセスから他のグループのリソースを見えないようにすることができる。例えば、PID 名前空間を使うとそれぞれの名前空間ごとに重複したプロセス番号を割り振ることが可能になる。マウント、UTS、ネットワーク、SysV IPC などの名前空間が利用可能。もし、"ns" cgroup がマウントされている場合、それぞれの名前空間は cgroup 階層構造内で新しいグループを作る。

名前空間は、unshare() や、clone() でフラグを設定することにより作ることができる。

関連項目

参照

  1. ↑ Jonathan Corbet (2007年5月29日). “Process containers”. LWN.net.
  2. 1 2 3 Jonathan Corbet (2007年10月29日). “Notes from a container”. LWN.net.
  3. ↑ Jonathan Corbet (2007年7月31日). “Controlling memory use in containers”. LWN.
  4. ↑ Balbir Singh, Vaidynathan Srinivasan (July 2007). Ottawa Linux Symposium https://www.kernel.org/doc/ols/2007/ols2007v2-pages-209-222.pdf. {{cite news}}: |title=は必須です。 (説明)
  5. ↑ Jonathan Corbet (2007年10月23日). “Kernel space: Fair user scheduling for Linux”. Network World.
  6. ↑ Kamkamezawa Hiroyu (2008年11月19日). Cgroup and Memory Resource Controller (PDF presentation slides). Japan Linux Symposium.
  7. 1 2 Dave Hansen. Resource Management (PDF presentation slides). Linux Foundation.
  8. ↑ Matt Helsley (2009年2月3日). “LXC: Linux container tools”. IBM developerWorks.
  9. ↑ Pavel Emelyanov, Kir Kolyshkin (2007年11月19日). “PID namespaces in the 2.6.24 kernel”. LWN.net.
  10. ↑ Jonathan Corbet (2007年1月30日). “Network namespaces”. LWN.net.
  11. ↑ Serge E. Hallyn, Ram Pai (2007年9月17日). “Applying mount namespaces”. IBM developerWorks.
  12. ↑ Janak Desai (2006年1月11日). “Linux kernel documentation on unshare”. 2011年10月21日閲覧。

外部リンク