The following series adds a "cgroup.procs" file to each cgroup that reports unique tgids rather than pids, and allows all threads in a threadgroup to be atomically moved to a new cgroup. The subsystem "attach" interface is modified to support attaching whole threadgroups at a time, which could introduce potential problems if any subsystem were to need to access the old cgroup of every thread being moved. The attach interface may need to be revised if this becomes the case. Also added is functionality for read/write locking all CLONE_THREAD fork()ing within a threadgroup, by means of an rwsem that lives in the sighand_struct, for per-threadgroup-ness and also for sharing a cacheline with the sighand's atomic count. This scheme should introduce no extra overhead in the fork path when there's no contention. The final patch reveals potential for a race when forking before a subsystem's attach function is called - one potential solution in case any subsystem has this problem is to hang on to the group's fork mutex through the attach() calls, though no subsystem yet demonstrates need for an extended critical section. --- Ben Blum (7): Adds ability to move all threads in a process to a new cgroup atomically Adds functionality to read/write lock CLONE_THREAD fork()ing per-threadgroup Lets ss->can_attach and ss->attach do whole threadgroups at a time Changes css_set freeing mechanism to be under RCU Use vmalloc for large cgroups pidlist allocations Ensures correct concurrent opening/reading of pidlists across pid namespaces Adds a read-only "procs" file similar to "tasks" that shows only unique tgids Paul Menage (1): Revert commit 8827c288feb7810185aa7c2e37537202fc709869 Documentation/cgroups/cgroups.txt | 25 + include/linux/cgroup.h | 67 ++- include/linux/init_task.h | 9 include/linux/sched.h | 15 + kernel/cgroup.c | 948 +++++++++++++++++++++++++++++-------- kernel/cgroup_freezer.c | 15 + kernel/cpuset.c | 66 ++- kernel/fork.c | 9 kernel/ns_cgroup.c | 16 + kernel/sched.c | 35 + mm/memcontrol.c | 3 security/device_cgroup.c | 3 12 files changed, 974 insertions(+), 237 deletions(-) _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers