Misunderstanding documentation on enabling cgroup controllers
Hi folks, The documentation for enabling and disabling cgroup controllers at https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Docu... 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? Thanks.
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/Docu... 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
participants (2)
-
Nicky Chorley -
Valentin Vidić