All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
To: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
	Suresh B Siddha <suresh.b.siddha@intel.com>,
	Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
	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>
Subject: Re: [RFC PATCH v3 5/5] sched: activate active load balancing in new idle cpus
Date: Tue, 11 Nov 2008 22:34:41 +0530	[thread overview]
Message-ID: <20081111170441.GT4646@dirshya.in.ibm.com> (raw)
In-Reply-To: <1226411235.7685.1775.camel@twins>

* Peter Zijlstra <a.p.zijlstra@chello.nl> [2008-11-11 14:47:15]:

> On Tue, 2008-11-11 at 00:03 +0530, Vaidyanathan Srinivasan wrote:
> > 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.
> 
> OK, I'm so not getting this patch..
> 
> if normal newly idle balancing fails that means the other runqueue has
> only a single task on it (or some other really stubborn stuff), so then
> you go move that one task that is already running, from one cpu to
> another.
> 
> _why_?
> 
> The only answer I can come up with is that you prefer one cpu's
> idle-ness over another - which makes sense, as you try to get whole
> packages idle.

Your answer is correct.  We want to move that one task from a non-idle
cpu to this cpu that is just going to be idle.  

This is the same method used to move task in load_balance(), I have
extended it for load_balance_newidle() to make the consolidation
faster at sched_mc=2.


> But I'm not seeing where that package logic is hidden..


The package logic comes from find_busiest_group().  If there are no
imbalance, then find_busiest_group() will return NULL.  However when
sched_mc={1,2} then find_busiest_group() will select a group
from which a running task may be pulled to this cpu in order to make
the other package idle.  If there is no opportunity to make a package
idle and if there are no imbalance, then find_busiest_group() will
return NULL and no action will be taken in load_balance_newidle().

Under normal task pull operation due to imbalance, there will be more
than one task in the source run queue and move_tasks() will succeed.
ld_moved will be true and the active balance code will not be
triggered.

If we enter a scenario where we are moving the only running task from
another cpu, then this should have been suggested by
find_busiest_group's sched_mc balance logic and thus moving that task
will potentially freeup the source package.

Thanks for the careful review.

--Vaidy


  reply	other threads:[~2008-11-11 17:08 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 ` [RFC PATCH v3 5/5] sched: activate active load balancing in new idle cpus Vaidyanathan Srinivasan
2008-11-11 13:47   ` Peter Zijlstra
2008-11-11 17:04     ` Vaidyanathan Srinivasan [this message]
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=20081111170441.GT4646@dirshya.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 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.