2019-07-16 - 仮想化, コンテナ, cgroup, 社内勉強会
コンテナ技術とcgroup(執筆中)
コンテナ技術を支える技術のひとつであるcgroupを紹介する。
コンテナリソースの制限
コンテナによる仮想化はVMのようなマシンを抽象化する仮想化とは異なる。仮想CPUや仮想メモリといった概念はなく、それらのクロック、コア数や容量といった概念も存在しない。 にも関わらずコンテナ技術ではコンテナ毎に利用できるCPUやメモリのリソース条件を定められる。その実現に用いられる仕組みがcgroupである。
cgroup
cgroupとはControl Groupsを意味している。Linuxのドキュメントでは、
cgroup is a mechanism to organize processes hierarchically and distribute system resources along the hierarchy in a controlled and configurable manner.
プロセスを階層的に管理し、システム資源を制御され設定可能な方法で、その階層に沿って分配する仕組み
と説明されている。
cgorupsの利用方法
cgroupにはv1とv2が存在するが、ここではv2の利用方法を説明する。
cgroup FSのマウント
cgroup では、cgroupの管理するプロセスの階層構造をファイルシステムを通して扱う特徴がある。 cgroup FSというcgroupのプロセス階層を扱うためのインターフェース用意されている。まずはこれをマウントする。
# マウントポイントの作成
$ sudo mkdir /mnt/cg-demo
# マウント
# マウント元という概念はないのでnoneを指定している
$ sudo mount -t cgroup2 none /mnt/cg-demo
プロセスグループの作成
プロセス