From: Mike Galbraith <efault@gmx.de>
To: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@elte.hu>,
Arjan van de Ven <arjan@linux.jf.intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>,
Yanmin Zhang <yanmin_zhang@linux.jf.intel.com>,
Gautham R Shenoy <ego@in.ibm.com>
Subject: Re: [patch 2/2] sched: fix select_idle_sibling() logic in select_task_rq_fair()
Date: Wed, 10 Mar 2010 22:14:21 +0100 [thread overview]
Message-ID: <1268255661.6613.4.camel@marge.simson.net> (raw)
In-Reply-To: <1268141220.28032.12.camel@marge.simson.net>
On Tue, 2010-03-09 at 14:27 +0100, Mike Galbraith wrote:
> On Tue, 2010-03-09 at 07:05 +0100, Mike Galbraith wrote:
> > On Mon, 2010-03-08 at 14:24 -0800, Suresh Siddha wrote:
>
> > > Ok. I dropped that part in v2 patches that I just posted.
> >
> > Yeah, I see mails (ramble ramble) crossed in the night. I'll take them
> > out for a spin, see if your box can get fixed up without busting mine :)
>
...
BTW, does the below also cure your netbook's woes? (should)
sched: fix select_idle_sibling()
Don't bother with selection when the current cpu is idle. Recent load
balancing changes also make it no longer necessary to check wake_affine()
success before returning the selected sibling, so we now always use it.
Signed-off-by: Mike Galbraith <efault@gmx.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>
---
kernel/sched_fair.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
Index: linux-2.6/kernel/sched_fair.c
===================================================================
--- linux-2.6.orig/kernel/sched_fair.c
+++ linux-2.6/kernel/sched_fair.c
@@ -1438,7 +1438,7 @@ static int select_task_rq_fair(struct ta
int cpu = smp_processor_id();
int prev_cpu = task_cpu(p);
int new_cpu = cpu;
- int want_affine = 0;
+ int want_affine = 0, cpu_idle = !current->pid;
int want_sd = 1;
int sync = wake_flags & WF_SYNC;
@@ -1496,13 +1496,15 @@ static int select_task_rq_fair(struct ta
* If there's an idle sibling in this domain, make that
* the wake_affine target instead of the current cpu.
*/
- if (tmp->flags & SD_SHARE_PKG_RESOURCES)
+ if (!cpu_idle && tmp->flags & SD_SHARE_PKG_RESOURCES)
target = select_idle_sibling(p, tmp, target);
if (target >= 0) {
if (tmp->flags & SD_WAKE_AFFINE) {
affine_sd = tmp;
want_affine = 0;
+ if (target != cpu)
+ cpu_idle = 1;
}
cpu = target;
}
@@ -1518,6 +1520,7 @@ static int select_task_rq_fair(struct ta
sd = tmp;
}
+#ifdef CONFIG_FAIR_GROUP_SCHED
if (sched_feat(LB_SHARES_UPDATE)) {
/*
* Pick the largest domain to update shares over
@@ -1531,9 +1534,12 @@ static int select_task_rq_fair(struct ta
if (tmp)
update_shares(tmp);
}
+#endif
- if (affine_sd && wake_affine(affine_sd, p, sync))
- return cpu;
+ if (affine_sd) {
+ if (cpu_idle || cpu == prev_cpu || wake_affine(affine_sd, p, sync))
+ return cpu;
+ }
while (sd) {
int load_idx = sd->forkexec_idx;
next prev parent reply other threads:[~2010-03-10 21:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-05 18:39 [patch 1/2] sched: check for prev_cpu == this_cpu in wake_affine() Suresh Siddha
2010-03-05 18:39 ` [patch 2/2] sched: fix select_idle_sibling() logic in select_task_rq_fair() Suresh Siddha
2010-03-05 20:25 ` Mike Galbraith
2010-03-06 8:21 ` Mike Galbraith
2010-03-08 22:24 ` Suresh Siddha
2010-03-09 6:05 ` Mike Galbraith
2010-03-09 13:27 ` Mike Galbraith
2010-03-10 21:14 ` Mike Galbraith [this message]
2010-03-06 8:36 ` Mike Galbraith
2010-03-05 19:36 ` [patch 1/2] sched: check for prev_cpu == this_cpu in wake_affine() Mike Galbraith
2010-03-08 19:09 ` Suresh Siddha
2010-03-08 22:25 ` Mike Galbraith
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=1268255661.6613.4.camel@marge.simson.net \
--to=efault@gmx.de \
--cc=a.p.zijlstra@chello.nl \
--cc=arjan@linux.jf.intel.com \
--cc=ego@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=suresh.b.siddha@intel.com \
--cc=svaidy@linux.vnet.ibm.com \
--cc=yanmin_zhang@linux.jf.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome