From: Mike Galbraith <mgalbraith@suse.de>
To: Peter Zijlstra <peterz@infradead.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Rik van Riel <riel@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>
Subject: Re: [patch v3.18+ regression fix] sched: Further improve spurious CPU_IDLE active migrations
Date: Wed, 31 Aug 2016 12:18:19 +0200 [thread overview]
Message-ID: <1472638699.3942.14.camel@suse.de> (raw)
In-Reply-To: <20160831100117.GV10121@twins.programming.kicks-ass.net>
On Wed, 2016-08-31 at 12:01 +0200, Peter Zijlstra wrote:
> On Tue, Aug 30, 2016 at 07:42:55AM +0200, Mike Galbraith wrote:
> >
> > 43f4d666 partially cured spurious migrations, but when there are
> > completely idle groups on a lightly loaded processor, and there is
> > a buddy pair occupying the busiest group, we will not attempt to
> > migrate due to select_idle_sibling() buddy placement, leaving the
> > busiest queue with one task. We skip balancing, but increment
> > nr_balance_failed until we kick active balancing, and bounce a
> > buddy pair endlessly, demolishing throughput.
>
> Have you ran this patch through other benchmarks? It looks like
> something that might make something else go funny.
No, but it will be going through SUSE's performance test grid.
> > --- a/kernel/sched/fair.c
> > +++ b/kernel/sched/fair.c
> > @@ -7249,11 +7249,12 @@ static struct sched_group *find_busiest_
> > > > > > > > * This cpu is idle. If the busiest group is not overloaded
> > > > > > > > * and there is no imbalance between this and busiest group
> > > > > > > > * wrt idle cpus, it is balanced. The imbalance becomes
> > -> > > > > > * significant if the diff is greater than 1 otherwise we
> > -> > > > > > * might end up to just move the imbalance on another group
> > +> > > > > > * significant if the diff is greater than 2 otherwise we
> > +> > > > > > * may end up merely moving the imbalance to another group,
> > +> > > > > > * or bouncing a buddy pair needlessly.
> > > > > > > > */
> > > > > > > > if ((busiest->group_type != group_overloaded) &&
> > -> > > > > > > > > > (local->idle_cpus <= (busiest->idle_cpus + 1)))
> > +> > > > > > > > > > (local->idle_cpus <= (busiest->idle_cpus + 2)))
> > > > > > > > > > goto out_balanced;
>
> So 43f4d66637bc ("sched: Improve sysbench performance by fixing spurious
> active migration") 's +1 made sense in that its a tie breaker. If you
> have 3 tasks on 2 groups, one group will have to have 2 tasks, and
> bouncing the one task around just isn't going to help _anything_.
Yeah, but frequently tasks don't come in ones, so, you end up with an
endless tug of war between LB ripping communicating buddies apart, and
select_idle_sibling() pulling them back together.. bouncing cow
syndrome.
> Incrementing that to +2 has the effect that if you have two tasks on two
> groups, 0,2 is a valid distribution. Which I understand is exactly what
> you want for this workload. But if the two tasks are unrelated, 1,1
> really is a better spread.
True. Better ideas welcome.
-Mike
next prev parent reply other threads:[~2016-08-31 10:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-30 5:42 [patch v3.18+ regression fix] sched: Further improve spurious CPU_IDLE active migrations Mike Galbraith
2016-08-31 10:01 ` Peter Zijlstra
2016-08-31 10:18 ` Mike Galbraith [this message]
2016-08-31 10:36 ` Mike Galbraith
2016-08-31 15:52 ` Vincent Guittot
2016-09-01 4:11 ` Mike Galbraith
2016-09-01 6:37 ` Mike Galbraith
2016-09-01 8:09 ` Vincent Guittot
2016-09-05 16:26 ` [v2 patch " Mike Galbraith
2016-09-06 13:01 ` Vincent Guittot
2016-09-06 13:07 ` Mike Galbraith
2016-09-06 13:42 ` Vincent Guittot
2016-09-06 13:59 ` Mike Galbraith
2016-09-06 13:44 ` 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=1472638699.3942.14.camel@suse.de \
--to=mgalbraith@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=vincent.guittot@linaro.org \
/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.