Skip to contentSkip to conversation

cpuset: Fix cpuset sched_relax_domain_level

PATCH In review Jason Low 2 participants 2 messages Jan 30, 2015 – Jan 31, 2015

Subsystems (2)
lore
Share & tools
lore

Jason Low

author
#0 lore raw

PATCH v2 1/1 cpuset: Fix cpuset sched_relax_domain_level

The cpuset.sched_relax_domain_level can control how far we do immediate load balancing on a system. However, it was found on recent kernels that echo'ing a value into cpuset.sched_relax_domain_level did not reduce any immediate load balancing.

The reason this occurred was because the update_domain_attr_tree() traversal did not update for the "top_cpuset". This resulted in nothing being changed when modifying the sched_relax_domain_level parameter.

This patch is able to address that problem by having update_domain_attr_tree() allow updates for the root in the cpuset traversal.

Fixes fc560a26acce ("cpuset: replace cpuset->stack_list with cpuset_for_each_descendant_pre()")
Cc <[email protected]> # 3.9+
---
 kernel/cpuset.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)
kernel/cpuset.c +0 -3
index 64b257f..b589e57 100644
@@ -548,9 +548,6 @@ static void update_domain_attr_tree(struct sched_domain_attr *dattr,
 
 	rcu_read_lock();
 	cpuset_for_each_descendant_pre(cp, pos_css, root_cs) {
-		if (cp == root_cs)
-			continue;
-
 		/* skip the whole subtree if @cp doesn't have any CPU */
 		if (cpumask_empty(cp->cpus_allowed)) {
 			pos_css = css_rightmost_descendant(pos_css);
Signature · 1 line
1.7.2.5
Acked-by on v2 1/1
#1 lore raw
Quoted 9 lines · Jason Low

The cpuset.sched_relax_domain_level can control how far we do immediate load balancing on a system. However, it was found on recent kernels that echo'ing a value into cpuset.sched_relax_domain_level did not reduce any immediate load balancing.

The reason this occurred was because the update_domain_attr_tree() traversal did not update for the "top_cpuset". This resulted in nothing being changed when modifying the sched_relax_domain_level parameter.

Quoted 6 lines

This patch is able to address that problem by having update_domain_attr_tree() allow updates for the root in the cpuset traversal.

Fixes fc560a26acce ("cpuset: replace cpuset->stack_list with cpuset_for_each_descendant_pre()")
Cc <[email protected]> # 3.9+
Quoted 19 lines
---
 kernel/cpuset.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)
kernel/cpuset.c +0 -3
index 64b257f..b589e57 100644
@@ -548,9 +548,6 @@ static void update_domain_attr_tree(struct sched_domain_attr *dattr,
 
 	rcu_read_lock();
 	cpuset_for_each_descendant_pre(cp, pos_css, root_cs) {
-		if (cp == root_cs)
-			continue;
-
 		/* skip the whole subtree if @cp doesn't have any CPU */
 		if (cpumask_empty(cp->cpus_allowed)) {
 			pos_css = css_rightmost_descendant(pos_css);