cgroup: implement hierarchy limits
authorRoman Gushchin <guro@fb.com>
Fri, 28 Jul 2017 17:28:44 +0000 (18:28 +0100)
committerTejun Heo <tj@kernel.org>
Wed, 2 Aug 2017 19:05:20 +0000 (12:05 -0700)
commit1a926e0bbab83bae8207d05a533173425e0496d1
tree8b0d77250135e254907205b4711e7a7b7174b78e
parent0679dee03c6d706d57145ea92c23d08fa10a1999
cgroup: implement hierarchy limits

Creating cgroup hierearchies of unreasonable size can affect
overall system performance. A user might want to limit the
size of cgroup hierarchy. This is especially important if a user
is delegating some cgroup sub-tree.

To address this issue, introduce an ability to control
the size of cgroup hierarchy.

The cgroup.max.descendants control file allows to set the maximum
allowed number of descendant cgroups.
The cgroup.max.depth file controls the maximum depth of the cgroup
tree. Both are single value r/w files, with "max" default value.

The control files exist on each hierarchy level (including root).
When a new cgroup is created, we check the total descendants
and depth limits on each level, and if none of them are exceeded,
a new cgroup is created.

Only alive cgroups are counted, removed (dying) cgroups are
ignored.

Signed-off-by: Roman Gushchin <guro@fb.com>
Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: Waiman Long <longman@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: kernel-team@fb.com
Cc: cgroups@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Documentation/cgroup-v2.txt
include/linux/cgroup-defs.h
kernel/cgroup/cgroup.c