Re: [RFC PATCH 00/14] cgroup: Implement cgroup v2 thread mode & CPU controller

From: Waiman Long
Date: Wed Apr 26 2017 - 12:05:56 EST


On 04/21/2017 10:03 AM, Waiman Long wrote:
> This patchset incorporates the following 2 patchsets from Tejun Heo:
>
> 1) cgroup v2 thread mode patchset (5 patches)
> https://lkml.org/lkml/2017/2/2/592
> 2) CPU Controller on Control Group v2 (2 patches)
> https://lkml.org/lkml/2016/8/5/368
>
> Additional patches are then layered on top to implement the following
> new features:
>
> 1) An enhanced v2 thread mode where a thread root (root of a threaded
> subtree) can have non-threaded children with non-threaded
> controllers enabled and no internal process constraint does
> not apply.
> 2) An enhanced debug controller which dumps out more information
> relevant to the debugging and testing of cgroup v2 in general.
> 3) Separate control knobs for resource domain controllers can be
> enabled in a thread root to manage all the internal processes in
> the threaded subtree.
>
> Patches 1-5 are Tejun's cgroup v2 thread mode patchset.
>
> Patch 6 fixes a task_struct reference counting bug introduced in
> patch 1.
>
> Patch 7 moves the debug cgroup out from cgroup_v1.c into its own
> file.
>
> Patch 8 keeps more accurate counts of the number of tasks associated
> with each css_set.
>
> Patch 9 enhances the debug controller to provide more information
> relevant to the cgroup v2 thread mode to ease debugging effort.
>
> Patch 10 implements the enhanced cgroup v2 thread mode with the
> following enhancements:
>
> 1) Thread roots are treated differently from threaded cgroups.
> 2) Thread root can now have non-threaded controllers enabled as well
> as non-threaded children.
>
> Patches 11-12 are Tejun's CPU controller on control group v2 patchset.
>
> Patch 13 makes both cpu and cpuacct controllers threaded.
>
> Patch 14 enables the creation of a special "cgroup.self" directory
> under the thread root to hold resource control knobs for controllers
> that don't want resource competiton between internal processes and
> non-threaded child cgroups.
>
> Preliminary testing was done with the debug controller enabled. Things
> seemed to work fine so far. More rigorous testing will be needed, and
> any suggestions are welcome.
>
> Tejun Heo (7):
> cgroup: reorganize cgroup.procs / task write path
> cgroup: add @flags to css_task_iter_start() and implement
> CSS_TASK_ITER_PROCS
> cgroup: introduce cgroup->proc_cgrp and threaded css_set handling
> cgroup: implement CSS_TASK_ITER_THREADED
> cgroup: implement cgroup v2 thread support
> sched: Misc preps for cgroup unified hierarchy interface
> sched: Implement interface for cgroup unified hierarchy
>
> Waiman Long (7):
> cgroup: Fix reference counting bug in cgroup_procs_write()
> cgroup: Move debug cgroup to its own file
> cgroup: Keep accurate count of tasks in each css_set
> cgroup: Make debug cgroup support v2 and thread mode
> cgroup: Implement new thread mode semantics
> sched: Make cpu/cpuacct threaded controllers
> cgroup: Enable separate control knobs for thread root internal
> processes
>
> Documentation/cgroup-v2.txt | 114 +++++-
> include/linux/cgroup-defs.h | 56 +++
> include/linux/cgroup.h | 12 +-
> kernel/cgroup/Makefile | 1 +
> kernel/cgroup/cgroup-internal.h | 18 +-
> kernel/cgroup/cgroup-v1.c | 217 +++-------
> kernel/cgroup/cgroup.c | 862 ++++++++++++++++++++++++++++++++++------
> kernel/cgroup/cpuset.c | 6 +-
> kernel/cgroup/debug.c | 284 +++++++++++++
> kernel/cgroup/freezer.c | 6 +-
> kernel/cgroup/pids.c | 1 +
> kernel/events/core.c | 1 +
> kernel/sched/core.c | 150 ++++++-
> kernel/sched/cpuacct.c | 55 ++-
> kernel/sched/cpuacct.h | 5 +
> mm/memcontrol.c | 3 +-
> net/core/netclassid_cgroup.c | 2 +-
> 17 files changed, 1478 insertions(+), 315 deletions(-)
> create mode 100644 kernel/cgroup/debug.c
>
Does anyone has time to take a look at these patches?

As the merge window is going to open up next week, I am not going to
bother you guys when the merge window opens.

Cheers,
Longman