All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Ray Lee <ray-lk@madrabbit.org>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
	adobriyan@gmail.com, Ingo Molnar <mingo@elte.hu>,
	"Zhang, Yanmin" <yanmin_zhang@linux.intel.com>,
	Dhaval Giani <dhaval@linux.vnet.ibm.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
	Aneesh Kumar KV <aneesh.kumar@linux.vnet.ibm.com>,
	Balbir Singh <balbir@in.ibm.com>,
	Chris Friesen <cfriesen@nortel.com>
Subject: Re: VolanoMark regression with 2.6.27-rc1
Date: Wed, 20 Aug 2008 19:21:41 +0200	[thread overview]
Message-ID: <1219252901.8651.63.camel@twins> (raw)
In-Reply-To: <2c0942db0808200929r640b3a1cj33efc56cfd6db9b3@mail.gmail.com>

Ok, so one last time (I hope!)..

Everybody happy with this?

---
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.

[ray-lk@madrabbit.org: better avg implementation]
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 include/linux/kernel.h |    6 ++++++
 kernel/sched.c         |   10 ++++++++--
 2 files 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
@@ -2008,9 +2008,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 +2026,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);
 }
 
Index: linux-2.6/include/linux/kernel.h
===================================================================
--- linux-2.6.orig/include/linux/kernel.h
+++ linux-2.6/include/linux/kernel.h
@@ -367,6 +367,12 @@ static inline char *pack_hex_byte(char *
 	(void) (&_max1 == &_max2);		\
 	_max1 > _max2 ? _max1 : _max2; })
 
+#define avg(x, y) ({				\
+	typeof(x) _avg1 = (x);			\
+	typeof(y) _avg2 = (y);			\
+	(void) (&_avg1 == &_avg2);		\
+	_avg1 + (_avg2 - _avg1)/2; })
+
 /**
  * clamp - return a value clamped to a given range with strict typechecking
  * @val: current value



  parent reply	other threads:[~2008-08-20 17:23 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-31  3:20 VolanoMark regression with 2.6.27-rc1 Zhang, Yanmin
2008-07-31  7:31 ` Zhang, Yanmin
2008-07-31  7:39   ` Peter Zijlstra
2008-07-31  7:49     ` Zhang, Yanmin
2008-08-01  0:39       ` Zhang, Yanmin
2008-08-01  2:35         ` Miao Xie
2008-08-01  3:08           ` Zhang, Yanmin
2008-08-01  5:14         ` Dhaval Giani
2008-08-04  5:04           ` Zhang, Yanmin
2008-08-04  5:22             ` Dhaval Giani
2008-08-04  5:37               ` Zhang, Yanmin
2008-08-04  5:53                 ` Dhaval Giani
2008-08-04  6:26                   ` Peter Zijlstra
2008-08-04  6:26                   ` Peter Zijlstra
2008-08-04  7:05                     ` Dhaval Giani
2008-08-04  7:12                       ` Peter Zijlstra
2030-08-06  3:26                         ` Zhang, Yanmin
2008-08-08  7:30                           ` Peter Zijlstra
     [not found]                             ` <20080811185008.GA29291@linux.vnet.ibm.com>
     [not found]                               ` <1912726331.25608.235.camel@ymzhang>
     [not found]                                 ` <20080817115035.GA32223@linux.vnet.ibm.com>
     [not found]                                   ` <20080818052155.GA5063@linux.vnet.ibm.com>
2008-08-20  7:24                                     ` Zhang, Yanmin
2008-08-20  7:41                                       ` Peter Zijlstra
2008-08-20 10:51                                         ` Ingo Molnar
2008-08-20 13:32                                           ` Peter Zijlstra
2008-08-20 13:47                                             ` Ingo Molnar
2008-08-21  2:25                                               ` Zhang, Yanmin
2008-08-21  6:16                                                 ` Ingo Molnar
2008-08-21  6:48                                                   ` Zhang, Yanmin
2008-08-29  3:35                                                     ` Zhang, Yanmin
2008-08-29  3:38                                                       ` Zhang, Yanmin
2008-08-20 14:32                                             ` adobriyan
2008-08-20 14:33                                               ` Peter Zijlstra
2008-08-20 15:10                                                 ` Nick Piggin
2008-08-20 15:15                                                   ` Peter Zijlstra
2008-08-20 16:29                                                   ` Ray Lee
2008-08-20 16:51                                                     ` Peter Zijlstra
2008-08-20 17:21                                                     ` Peter Zijlstra [this message]
2008-08-20 17:55                                                       ` Nick Piggin
2008-08-20 18:15                                                         ` Ray Lee
2008-08-20 20:30                                                           ` Peter Zijlstra
2008-08-20 20:56                                                             ` Peter Zijlstra
2008-08-21  6:11                                                               ` Nick Piggin
2008-08-21  8:17                                                                 ` Peter Zijlstra
2008-08-21  6:15                                                               ` Ingo Molnar
2008-08-20 20:58                                                             ` Ray Lee
2008-08-20 21:04                                                               ` Peter Zijlstra
2008-08-21  6:12                                                       ` Ingo Molnar
2030-08-13  8:50                             ` Zhang, Yanmin
2008-08-04  6:54                   ` Peter Zijlstra
2008-08-15 15:37                     ` Ingo Molnar
2008-08-01 12:25 ` Hugh Dickins
2008-08-04  0:54   ` Zhang, Yanmin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1219252901.8651.63.camel@twins \
    --to=a.p.zijlstra@chello.nl \
    --cc=adobriyan@gmail.com \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=balbir@in.ibm.com \
    --cc=cfriesen@nortel.com \
    --cc=dhaval@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=nickpiggin@yahoo.com.au \
    --cc=ray-lk@madrabbit.org \
    --cc=vatsa@linux.vnet.ibm.com \
    --cc=yanmin_zhang@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.