summaryrefslogtreecommitdiffstats
path: root/include/linux/cgroup-defs.h
diff options
context:
space:
mode:
authorWaiman Long <longman@redhat.com>2017-06-13 17:18:01 -0400
committerTejun Heo <tj@kernel.org>2017-06-14 16:01:21 -0400
commit73a7242a06ff995d771fbe243e72b516feaa6e3d (patch)
treebf8fd976dc8adf41d6291acd83b20ea10c4fa7e5 /include/linux/cgroup-defs.h
parent63f700aab4c11d46626de3cd051dae56cf7e9056 (diff)
downloadlinux-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.h3
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