全く役に立たないエントリ。こんな Cgroup 使わないように。とりあえず折角調べたので忘れないようメモ。
昔々、ns cgroup なるものがありました。正式名称は "Namespace Cgroup" どうやら namespace と cgroup を連携させるものだったようで。
しかし、2.6.37(?) で
The ns_cgroup will be removed very soon. Let's warn, for this version, ns_cgroup is deprecated.
https://lists.linux-foundation.org/pipermail/containers/2010-September/025531.html
作るたびに警告がログに出るようになり (コミット])、ついに 3.0 で
The ns_cgroup is an annoying cgroup at the namespace / cgroup frontier and leads to some problems
http://lists.linuxfoundation.org/pipermail/containers/2011-January/026343.html
削除されました(コミット])。
しかし、CentOS 6 では生き残ってます (RHEL 6 でも)。
[root@centos6 cgroup]# cat /proc/cgroups #subsys_name hierarchy num_cgroups enabled cpuset 1 1 1 ns 1 1 1 cpu 1 1 1 cpuacct 1 1 1 memory 1 1 1 devices 1 1 1 freezer 1 1 1 net_cls 1 1 1 blkio 1 1 1 perf_event 1 1 1 net_prio 1 1 1
使ったことなかったので試してみました。libcgroup とかインストールしないで /cgroup に cgroupfs をマウント。なんとこの時点では /sys/fs/cgroup はありません (作れませんし)。/etc/fstab にこんな風に記述します。
cgroup /cgroup cgroup defaults 0 0
unshare コマンドはあるので、とりあえず mount, uts, ipc namespace を作成して bash を実行。
[root@centos6 ~]# unshare -m -u -i /bin/bash [root@centos6 ~]# echo $$ 1136
PID は 1136 番です。ここで /cgroup を見てみると
[root@centos6 ~]# ls -F /cgroup/ 1136/ cpuset.memory_pressure_enabled blkio.io_merged cpuset.memory_spread_page blkio.io_queued cpuset.memory_spread_slab : (snip) [root@centos6 ~]# cat /cgroup/1136/tasks 1136 1144
おぉ、PID で cgroup が作られています。そりゃ PID 一巡したらマズいわな。:p tasks にも登録されてますね。
ちなみに CentOS6 で lxc-0.9.0 をインストールしてみましたが、ns cgroup サブシステムがマウントされていると「cgroupが作れへん」と言われてエラーでコンテナ起動しませんでした。
libcgroup インストールしてもきっと使ってないんですよね (未確認)。