diff options
author | Waiman Long <longman@redhat.com> | 2017-06-13 17:18:01 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2017-06-14 16:01:21 -0400 |
commit | 73a7242a06ff995d771fbe243e72b516feaa6e3d (patch) | |
tree | bf8fd976dc8adf41d6291acd83b20ea10c4fa7e5 /include/linux/cgroup-defs.h | |
parent | 63f700aab4c11d46626de3cd051dae56cf7e9056 (diff) | |
download | linux-73a7242a06ff995d771fbe243e72b516feaa6e3d.tar.gz linux-73a7242a06ff995d771fbe243e72b516feaa6e3d.tar.bz2 linux-73a7242a06ff995d771fbe243e72b516feaa6e3d.zip |
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>
Diffstat (limited to 'include/linux/cgroup-defs.h')
-rw-r--r-- | include/linux/cgroup-defs.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index ec47101cb1bf..3bc4196bf217 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -166,6 +166,9 @@ struct css_set { /* the default cgroup associated with this css_set */ struct cgroup *dfl_cgrp; + /* internal task count, protected by css_set_lock */ + int nr_tasks; + /* * Lists running through all tasks using this cgroup group. * mg_tasks lists tasks which belong to this cset but are in the |