Misunderstanding documentation on enabling cgroup controllers
Valentin Vidić
vvidic at valentin-vidic.from.hr
Sun Aug 21 14:14:03 EDT 2022
On Fri, Aug 19, 2022 at 09:24:53AM +0100, Nicky Chorley wrote:
> The documentation for enabling and disabling cgroup controllers at
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/cgroup-v2.rst#n403
> says that no controllers are enabled by default and to enable them,
> one needs to write into cgroup.subtree_control.
>
> I thought this meant that if I didn't enable a controller, I couldn't
> control those resources. However, I wrote a program to limit the
> number of processes in a cgroup and it works as expected - if I try to
> create more processes, I'm unable to. I didn't write "+pids" into
> cgroup.subtree_control - that file remains empty.
>
> Am I misunderstanding the documentation, then?
AFAICT, it seems to be working as documented. It means that whatever
you put have in cgroup.subtree_control becomes cgroup.controllers in
a subdirectory. For example:
# cat /sys/fs/cgroup/cgroup.controllers
cpuset cpu io memory hugetlb pids rdma
# cat /sys/fs/cgroup/cgroup.subtree_control
cpuset cpu io memory pids
# mkdir /sys/fs/cgroup/dir1
# cat /sys/fs/cgroup/dir1/cgroup.controllers
cpuset cpu io memory pids
# cat /sys/fs/cgroup/dir1/cgroup.subtree_control
# ls /sys/fs/cgroup/dir1
cgroup.controllers cpuset.cpus memory.max
cgroup.events cpuset.cpus.effective memory.min
cgroup.freeze cpuset.cpus.partition memory.numa_stat
cgroup.max.depth cpuset.mems memory.oom.group
cgroup.max.descendants cpuset.mems.effective memory.pressure
cgroup.procs dir2 memory.stat
cgroup.stat io.max memory.swap.current
cgroup.subtree_control io.pressure memory.swap.events
cgroup.threads io.stat memory.swap.high
cgroup.type io.weight memory.swap.max
cpu.max memory.current pids.current
cpu.pressure memory.events pids.events
cpu.stat memory.events.local pids.max
cpu.weight memory.high
cpu.weight.nice memory.low
# mkdir /sys/fs/cgroup/dir1/dir2
# cat /sys/fs/cgroup/dir1/dir2/cgroup.controllers
# cat /sys/fs/cgroup/dir1/dir2/cgroup.subtree_control
# ls /sys/fs/cgroup/dir1/dir2
cgroup.controllers cgroup.max.descendants cgroup.threads io.pressure
cgroup.events cgroup.procs cgroup.type memory.pressure
cgroup.freeze cgroup.stat cpu.pressure
cgroup.max.depth cgroup.subtree_control cpu.stat
--
Valentin
More information about the Kernelnewbies
mailing list