cgroup: Keep accurate count of tasks in each css_set
authorWaiman Long <longman@redhat.com>
Tue, 13 Jun 2017 21:18:01 +0000 (17:18 -0400)
committerTejun Heo <tj@kernel.org>
Wed, 14 Jun 2017 20:01:21 +0000 (16:01 -0400)
commit73a7242a06ff995d771fbe243e72b516feaa6e3d
treebf8fd976dc8adf41d6291acd83b20ea10c4fa7e5
parent63f700aab4c11d46626de3cd051dae56cf7e9056
cgroup: Keep accurate count of tasks in each css_set

The reference count in the css_set data structure was used as a
proxy of the number of tasks attached to that css_set. However, that
count is actually not an accurate measure especially with thread mode
support. So a new variable nr_tasks is added to the css_set to keep
track of the actual task count. This new variable is protected by
the css_set_lock. Functions that require the actual task count are
updated to use the new variable.

tj: s/task_count/nr_tasks/ for consistency with cgroup_root->nr_cgrps.
    Refreshed on top of cgroup/for-v4.13 which dropped on
    css_set_populated() -> nr_tasks conversion.

Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
include/linux/cgroup-defs.h
kernel/cgroup/cgroup-v1.c
kernel/cgroup/cgroup.c