From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
To: Linux Kernel <linux-kernel@vger.kernel.org>,
Suresh B Siddha <suresh.b.siddha@intel.com>,
Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Ingo Molnar <mingo@elte.hu>, Dipankar Sarma <dipankar@in.ibm.com>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
Vatsa <vatsa@linux.vnet.ibm.com>,
Gautham R Shenoy <ego@in.ibm.com>,
Andi Kleen <andi@firstfloor.org>,
David Collier-Brown <davecb@sun.com>,
Tim Connors <tconnors@astro.swin.edu.au>,
Max Krasnyansky <maxk@qualcomm.com>,
Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Subject: [RFC PATCH v3 5/5] sched: activate active load balancing in new idle cpus
Date: Tue, 11 Nov 2008 00:03:43 +0530 [thread overview]
Message-ID: <20081110183343.562.72751.stgit@drishya.in.ibm.com> (raw)
In-Reply-To: <20081110181526.562.69941.stgit@drishya.in.ibm.com>
Active load balancing is a process by which migration thread
is woken up on the target CPU in order to pull current
running task on another package into this newly idle
package.
This method is already in use with normal load_balance(),
this patch introduces this method to new idle cpus when
sched_mc is set to POWERSAVINGS_BALANCE_WAKEUP.
This logic provides effective consolidation of short running
daemon jobs in a almost idle system
The side effect of this patch may be ping-ponging of tasks
if the system is moderately utilised. May need to adjust the
iterations before triggering.
Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
---
kernel/sched.c | 35 +++++++++++++++++++++++++++++++++++
1 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/kernel/sched.c b/kernel/sched.c
index 16c5e1f..4d99509 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -3687,10 +3687,45 @@ redo:
}
if (!ld_moved) {
+ int active_balance;
+ unsigned long flags;
+
schedstat_inc(sd, lb_failed[CPU_NEWLY_IDLE]);
if (!sd_idle && sd->flags & SD_SHARE_CPUPOWER &&
!test_sd_parent(sd, SD_POWERSAVINGS_BALANCE))
return -1;
+
+ if (sched_mc_power_savings < POWERSAVINGS_BALANCE_WAKEUP)
+ return -1;
+
+ if (sd->nr_balance_failed++ < 2)
+ return -1;
+
+ /* Release this_rq lock and take in correct order */
+ spin_unlock(&this_rq->lock);
+ double_rq_lock(this_rq, busiest);
+
+ /* don't kick the migration_thread, if the curr
+ * task on busiest cpu can't be moved to this_cpu
+ */
+ if (!cpu_isset(this_cpu, busiest->curr->cpus_allowed)) {
+ double_rq_unlock(this_rq, busiest);
+ spin_lock(&this_rq->lock);
+ all_pinned = 1;
+ return ld_moved;
+ }
+
+ if (!busiest->active_balance) {
+ busiest->active_balance = 1;
+ busiest->push_cpu = this_cpu;
+ active_balance = 1;
+ }
+
+ double_rq_unlock(this_rq, busiest);
+ if (active_balance)
+ wake_up_process(busiest->migration_thread);
+
+ spin_lock(&this_rq->lock);
} else
sd->nr_balance_failed = 0;
next prev parent reply other threads:[~2008-11-10 18:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-10 18:32 [RFC PATCH v3 0/5] Tunable sched_mc_power_savings=n Vaidyanathan Srinivasan
2008-11-10 18:33 ` [RFC PATCH v3 1/5] sched: Framework for sched_mc/smt_power_savings=N Vaidyanathan Srinivasan
2008-11-10 18:33 ` [RFC PATCH v3 2/5] sched: favour lower logical cpu number for sched_mc balance Vaidyanathan Srinivasan
2008-11-10 18:33 ` [RFC PATCH v3 3/5] sched: nominate preferred wakeup cpu Vaidyanathan Srinivasan
2008-11-11 13:43 ` Peter Zijlstra
2008-11-11 14:07 ` Gregory Haskins
2008-11-11 15:21 ` Srivatsa Vaddagiri
2008-11-11 15:26 ` Peter Zijlstra
2008-11-11 17:15 ` Vaidyanathan Srinivasan
2008-11-11 17:17 ` Vaidyanathan Srinivasan
2008-11-11 16:48 ` Vaidyanathan Srinivasan
2008-11-11 16:49 ` Balbir Singh
2008-11-11 17:27 ` Vaidyanathan Srinivasan
2008-11-10 18:33 ` [RFC PATCH v3 4/5] sched: bias task wakeups to preferred semi-idle packages Vaidyanathan Srinivasan
2008-11-10 18:33 ` Vaidyanathan Srinivasan [this message]
2008-11-11 13:47 ` [RFC PATCH v3 5/5] sched: activate active load balancing in new idle cpus Peter Zijlstra
2008-11-11 17:04 ` Vaidyanathan Srinivasan
2008-11-11 17:21 ` Peter Zijlstra
2008-11-11 17:31 ` Vaidyanathan Srinivasan
2008-11-10 18:50 ` [RFC PATCH v3 0/5] Tunable sched_mc_power_savings=n Peter Zijlstra
2008-11-11 4:52 ` Vaidyanathan Srinivasan
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=20081110183343.562.72751.stgit@drishya.in.ibm.com \
--to=svaidy@linux.vnet.ibm.com \
--cc=a.p.zijlstra@chello.nl \
--cc=andi@firstfloor.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=davecb@sun.com \
--cc=dipankar@in.ibm.com \
--cc=ego@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maxk@qualcomm.com \
--cc=mingo@elte.hu \
--cc=suresh.b.siddha@intel.com \
--cc=tconnors@astro.swin.edu.au \
--cc=vatsa@linux.vnet.ibm.com \
--cc=venkatesh.pallipadi@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
all inboxes | Powered by JetHome®