From: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
To: "'Andrew Theurer'" <habanero@us.ibm.com>, <kernel@kolivas.org>,
<ricklind@us.ibm.com>, "'Nick Piggin'" <nickpiggin@yahoo.com.au>,
<mingo@elte.hu>
Cc: <linux-kernel@vger.kernel.org>
Subject: RE: [RFC][PATCH] sched: aggressive idle balance
Date: Tue, 2 Nov 2004 14:55:14 -0800 [thread overview]
Message-ID: <200411022251.iA2Mpgq18929@unix-os.sc.intel.com> (raw)
In-Reply-To:
Andrew Theurer wrote on Tuesday, November 02, 2004 12:17 PM
>
> This patch allows more aggressive idle balances, reducing idle time in
> scenarios where should not be any, where nr_running > nr_cpus. We have seen
> this in a couple of online transaction workloads. Three areas are targeted:
>
> 1) In try_to_wake_up(), wake_idle() is called to move the task to a sibling if
> the task->cpu is busy and the sibling is idle. This has been expanded to any
> idle cpu, but the closest idle cpu is picked first by starting with cpu->sd,
> then going up the domains as necessary.
Chen, Kenneth W wrote on Tuesday, November 02, 2004 2:35 PM
> It occurs to me that half of the patch only applicable to HT, like the change
> in wake_idle(). And also, do you really want to put that functionality in
> wake_idle()? Seems defeating the original intention of that function, which
> only tries to wake up sibling cpu as far as how I understand the code.
>
> My setup is 4-way SMP, no HT (4-way itanium2 processor), sorry, I won't be able
> to tell you how this portion of the change affect online transaction workload.
Move that functionality into try_to_wake_up directly. I'm going to try this
on my setup.
--- kernel/sched.c.orig 2004-11-02 13:35:33.000000000 -0800
+++ kernel/sched.c 2004-11-02 14:51:08.000000000 -0800
@@ -1059,13 +1059,21 @@ static int try_to_wake_up(task_t * p, un
schedstat_inc(sd, ttwu_wake_balance);
goto out_set_cpu;
}
+ } else if (sd->flags & SD_WAKE_IDLE) {
+ cpus_and(tmp, sd->span, cpu_online_map);
+ cpus_and(tmp, tmp, p->cpus_allowed);
+ for_each_cpu_mask(i, tmp) {
+ if (idle_cpu(i)) {
+ new_cpu = i;
+ goto out_set_cpu;
+ }
+ }
}
}
new_cpu = cpu; /* Could not wake to this_cpu. Wake to cpu instead */
out_set_cpu:
schedstat_inc(rq, ttwu_attempts);
- new_cpu = wake_idle(new_cpu, p);
if (new_cpu != cpu && cpu_isset(new_cpu, p->cpus_allowed)) {
schedstat_inc(rq, ttwu_moved);
set_task_cpu(p, new_cpu);
next reply other threads:[~2004-11-02 23:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-02 22:55 Chen, Kenneth W [this message]
-- strict thread matches above, loose matches on Subject: below --
2004-11-02 20:16 Andrew Theurer
2004-11-02 21:29 ` Chen, Kenneth W
2004-11-02 22:34 ` Chen, Kenneth W
2004-11-03 2:28 ` Andrew Theurer
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=200411022251.iA2Mpgq18929@unix-os.sc.intel.com \
--to=kenneth.w.chen@intel.com \
--cc=habanero@us.ibm.com \
--cc=kernel@kolivas.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nickpiggin@yahoo.com.au \
--cc=ricklind@us.ibm.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