Messages in this thread Patch in this message | | | From | Waiman Long <> | Subject | [PATCH v11 3/9] cpuset: Simulate auto-off of sched.partition at cgroup removal | Date | Sun, 24 Jun 2018 15:30:34 +0800 |
| |
Making a cgroup a partition root will reserve cpu resource at its parent. So when a partition root cgroup is destroyed, we need to free the reserved cpus at its parent. This is now done by doing an auto-off of the sched.partition flag in the offlining phase when a partition root cgroup is being removed.
Signed-off-by: Waiman Long <longman@redhat.com> --- kernel/cgroup/cpuset.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 5989bff..e902f54 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -2278,7 +2278,12 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) /* * If the cpuset being removed has its flag 'sched_load_balance' * enabled, then simulate turning sched_load_balance off, which - * will call rebuild_sched_domains_locked(). + * will call rebuild_sched_domains_locked(). That is not needed + * in the default hierarchy where only changes in partition + * will cause repartitioning. + * + * If the cpuset has the 'sched.partition' flag enabled, simulate + * turning 'sched.partition" off. */ static void cpuset_css_offline(struct cgroup_subsys_state *css) @@ -2287,7 +2292,18 @@ static void cpuset_css_offline(struct cgroup_subsys_state *css) mutex_lock(&cpuset_mutex); - if (is_sched_load_balance(cs)) + /* + * A WARN_ON_ONCE() check after calling update_flag() to make + * sure that the operation succceeds without failure. + */ + if (is_partition_root(cs)) { + int ret = update_flag(CS_PARTITION_ROOT, cs, 0); + + WARN_ON_ONCE(ret); + } + + if (!cgroup_subsys_on_dfl(cpuset_cgrp_subsys) && + is_sched_load_balance(cs)) update_flag(CS_SCHED_LOAD_BALANCE, cs, 0); cpuset_dec(); -- 1.8.3.1
| |