Commit c372e817 authored by Li Zefan's avatar Li Zefan Committed by Linus Torvalds

cpuset: avoid unnecessary sched domains rebuilding

When changing 'sched_relax_domain_level', don't rebuild sched domains if
'cpus' is empty or 'sched_load_balance' is not set.

Also make the comments of rebuild_sched_domains() more readable.
Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Cc: Paul Jackson <pj@sgi.com>
Cc: Paul Menage <menage@google.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f9b4fb8d
...@@ -496,11 +496,16 @@ update_domain_attr(struct sched_domain_attr *dattr, struct cpuset *c) ...@@ -496,11 +496,16 @@ update_domain_attr(struct sched_domain_attr *dattr, struct cpuset *c)
/* /*
* rebuild_sched_domains() * rebuild_sched_domains()
* *
* If the flag 'sched_load_balance' of any cpuset with non-empty * This routine will be called to rebuild the scheduler's dynamic
* 'cpus' changes, or if the 'cpus' allowed changes in any cpuset * sched domains:
* which has that flag enabled, or if any cpuset with a non-empty * - if the flag 'sched_load_balance' of any cpuset with non-empty
* 'cpus' is removed, then call this routine to rebuild the * 'cpus' changes,
* scheduler's dynamic sched domains. * - or if the 'cpus' allowed changes in any cpuset which has that
* flag enabled,
* - or if the 'sched_relax_domain_level' of any cpuset which has
* that flag enabled and with non-empty 'cpus' changes,
* - or if any cpuset with non-empty 'cpus' is removed,
* - or if a cpu gets offlined.
* *
* This routine builds a partial partition of the systems CPUs * This routine builds a partial partition of the systems CPUs
* (the set of non-overlappping cpumask_t's in the array 'part' * (the set of non-overlappping cpumask_t's in the array 'part'
...@@ -1076,7 +1081,8 @@ static int update_relax_domain_level(struct cpuset *cs, s64 val) ...@@ -1076,7 +1081,8 @@ static int update_relax_domain_level(struct cpuset *cs, s64 val)
if (val != cs->relax_domain_level) { if (val != cs->relax_domain_level) {
cs->relax_domain_level = val; cs->relax_domain_level = val;
rebuild_sched_domains(); if (!cpus_empty(cs->cpus_allowed) && is_sched_load_balance(cs))
rebuild_sched_domains();
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment