Re: VolanoMark regression with 2.6.27-rc1

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Peter Zijlstra
Date: Wednesday, August 20, 2008 - 8:15 am

On Thu, 2008-08-21 at 01:10 +1000, Nick Piggin wrote:

I had it in sched.c, then moved it to kernel.h and back again, etc.. I'm
fine with wherever..

---
Subject: sched: load-balance bias fixes
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Wed Aug 20 15:28:51 CEST 2008

Yanmin spotted a regression with my patch that introduces LB_BIAS:

  commit 93b75217df39e6d75889cc6f8050343286aff4a5
  Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
  Date:   Fri Jun 27 13:41:33 2008 +0200

And I just spotted the brainfart - I should have replaced min/max with avg
instead of removing it completely.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 kernel/sched.c |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

Index: linux-2.6/kernel/sched.c
===================================================================
--- linux-2.6.orig/kernel/sched.c
+++ linux-2.6/kernel/sched.c
@@ -1996,6 +1996,12 @@ void kick_process(struct task_struct *p)
 	preempt_enable();
 }
 
+#define avg(x, y) ({				\
+	typeof(x) _avg1 = ((x)+1)/2;		\
+	typeof(y) _avg2 = ((y)+1)/2;		\
+	(void) (&_avg1 == &_avg2);		\
+	_avg1 + _avg2; })
+
 /*
  * Return a low guess at the load of a migration-source cpu weighted
  * according to the scheduling class and "nice" value.
@@ -2008,9 +2014,12 @@ static unsigned long source_load(int cpu
 	struct rq *rq = cpu_rq(cpu);
 	unsigned long total = weighted_cpuload(cpu);
 
-	if (type == 0 || !sched_feat(LB_BIAS))
+	if (type == 0)
 		return total;
 
+	if (!sched_feat(LB_BIAS))
+		return avg(rq->cpu_load[type-1], total);
+
 	return min(rq->cpu_load[type-1], total);
 }
 
@@ -2023,9 +2032,12 @@ static unsigned long target_load(int cpu
 	struct rq *rq = cpu_rq(cpu);
 	unsigned long total = weighted_cpuload(cpu);
 
-	if (type == 0 || !sched_feat(LB_BIAS))
+	if (type == 0)
 		return total;
 
+	if (!sched_feat(LB_BIAS))
+		return avg(rq->cpu_load[type-1], total);
+
 	return max(rq->cpu_load[type-1], total);
 }
 


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 12:24 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 12:41 am)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 3:51 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 6:32 am)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 6:47 am)
Re: VolanoMark regression with 2.6.27-rc1, adobriyan, (Wed Aug 20, 7:32 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 7:33 am)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 8:10 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 8:15 am)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 9:29 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 9:51 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 10:21 am)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 10:55 am)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 11:15 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 1:30 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 1:56 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 1:58 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 2:04 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 7:25 pm)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 11:11 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:12 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:15 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:16 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 11:48 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Thu Aug 21, 1:17 am)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Thu Aug 28, 8:35 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Thu Aug 28, 8:38 pm)