Commit b0cff9d8 authored by Joonsoo Kim's avatar Joonsoo Kim Committed by Ingo Molnar

sched: Fix load balancing performance regression in should_we_balance()

Commit 23f0d209 ("sched: Factor out code to should_we_balance()")
introduces the should_we_balance() function.  This function should
return 1 if this cpu is appropriate for balancing. But the newly
introduced code doesn't do so, it returns 0 instead of 1.

This introduces performance regression, reported by Dave Chinner:

                        v4 filesystem           v5 filesystem
3.11+xfsdev:            220k files/s            225k files/s
3.12-git                180k files/s            185k files/s
3.12-git-revert         245k files/s            247k files/s

You can find more detailed information at:

  https://lkml.org/lkml/2013/9/10/1

This patch corrects the return value of should_we_balance()
function as orignally intended.

With this patch, Dave Chinner reports that the regression is gone:

                        v4 filesystem           v5 filesystem
3.11+xfsdev:            220k files/s            225k files/s
3.12-git                180k files/s            185k files/s
3.12-git-revert         245k files/s            247k files/s
3.12-git-fix            249k files/s            248k files/s
Reported-by: default avatarDave Chinner <dchinner@redhat.com>
Tested-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Paul Turner <pjt@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Dave Chinner <david@fromorbit.com>
Link: http://lkml.kernel.org/r/20130910065448.GA20368@lge.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 816434ec
...@@ -5151,7 +5151,7 @@ static int should_we_balance(struct lb_env *env) ...@@ -5151,7 +5151,7 @@ static int should_we_balance(struct lb_env *env)
* First idle cpu or the first cpu(busiest) in this sched group * First idle cpu or the first cpu(busiest) in this sched group
* is eligible for doing load balancing at this and above domains. * is eligible for doing load balancing at this and above domains.
*/ */
return balance_cpu != env->dst_cpu; return balance_cpu == env->dst_cpu;
} }
/* /*
......
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