From: Jason Low <jason.low2@hp.com>
To: Ingo Molnar <mingo@kernel.org>, jason.low2@hp.com
Cc: peterz@infradead.org, linux-kernel@vger.kernel.org,
daniel.lezcano@linaro.org, alex.shi@linaro.org,
preeti@linux.vnet.ibm.com, efault@gmx.de,
vincent.guittot@linaro.org, morten.rasmussen@arm.com,
aswin@hp.com
Subject: Re: [PATCH 2/2] sched: Fix next_balance logic in rebalance_domains() and idle_balance()
Date: Thu, 08 May 2014 15:14:04 -0700 [thread overview]
Message-ID: <1399587244.2030.59.camel@j-VirtualBox> (raw)
In-Reply-To: <20140508173835.GB9838@gmail.com>
On Thu, 2014-05-08 at 19:38 +0200, Ingo Molnar wrote:
> * Jason Low <jason.low2@hp.com> wrote:
>
> > On Mon, 2014-04-28 at 15:45 -0700, Jason Low wrote:
> > > Currently, in idle_balance(), we update rq->next_balance when we pull_tasks.
> > > However, it is also important to update this in the !pulled_tasks case too.
> > >
> > > When the CPU is "busy" (the CPU isn't idle), rq->next_balance gets computed
> > > using sd->busy_factor (so we increase the balance interval when the CPU is
> > > busy). However, when the CPU goes idle, rq->next_balance could still be set
> > > to a large value that was computed with the sd->busy_factor.
> > >
> > > Thus, we need to also update rq->next_balance in idle_balance() in the cases
> > > where !pulled_tasks too, so that rq->next_balance gets updated without taking
> > > the busy_factor into account when the CPU is about to go idle.
> > >
> > > This patch makes rq->next_balance get updated independently of whether or
> > > not we pulled_task. Also, we add logic to ensure that we always traverse
> > > at least 1 of the sched domains to get a proper next_balance value for
> > > updating rq->next_balance.
> > >
> > > Additionally, since load_balance() modifies the sd->balance_interval, we
> > > need to re-obtain the sched domain's interval after the call to
> > > load_balance() in rebalance_domains() before we update rq->next_balance.
> > >
> > > This patch adds and uses 2 new helper functions, update_next_balance() and
> > > get_sd_balance_interval() to update next_balance and obtain the sched
> > > domain's balance_interval.
> >
> >
> > Hi Peter,
> >
> > I noticed that patch 1 is in tip, but not this patch 2. I was wondering
> > what the current status with this [PATCH 2/2] is at the moment.
>
> It was crashing the bootup with the attached config, it gave the splat
> attached below. (ignore the line duplication, it's a serial logging
> artifact.)
Hi Ingo, Peter,
Were there NULL domains on the test system? If so, I think we can
address the problem by doing update_next_balance() only if the below
rcu_dereference_check_sched_domain() returns a non-null domain.
@@ -6665,8 +6692,14 @@ static int idle_balance(struct rq *this_rq)
> */
> this_rq->idle_stamp = rq_clock(this_rq);
>
> - if (this_rq->avg_idle < sysctl_sched_migration_cost)
> + if (this_rq->avg_idle < sysctl_sched_migration_cost) {
> + rcu_read_lock();
> + sd = rcu_dereference_check_sched_domain(this_rq->sd);
> + update_next_balance(sd, 0, &next_balance);
> + rcu_read_unlock();
> +
> goto out;
> + }
next prev parent reply other threads:[~2014-05-08 22:14 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-28 22:45 [PATCH 0/2] sched: Idle load balance fixes Jason Low
2014-04-28 22:45 ` [PATCH 1/2] sched: Fix updating rq->max_idle_balance_cost and rq->next_balance in idle_balance() Jason Low
2014-05-08 10:42 ` [tip:sched/core] sched: Fix updating rq-> max_idle_balance_cost " tip-bot for Jason Low
2014-04-28 22:45 ` [PATCH 2/2] sched: Fix next_balance logic in rebalance_domains() and idle_balance() Jason Low
2014-05-08 16:59 ` Jason Low
2014-05-08 17:38 ` Ingo Molnar
2014-05-08 18:15 ` Jason Low
2014-05-08 22:14 ` Jason Low [this message]
2014-05-09 0:49 ` Jason Low
2014-05-09 9:08 ` Peter Zijlstra
2014-05-09 17:29 ` Jason Low
2014-05-19 13:09 ` [tip:sched/core] " tip-bot for Jason Low
2014-05-22 12:27 ` [tip:sched/core] sched: Fix the rq-> " tip-bot for Jason Low
2014-05-08 18:06 ` [PATCH 2/2] sched: Fix " Peter Zijlstra
2014-04-30 7:54 ` [PATCH 0/2] sched: Idle load balance fixes Peter Zijlstra
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=1399587244.2030.59.camel@j-VirtualBox \
--to=jason.low2@hp.com \
--cc=alex.shi@linaro.org \
--cc=aswin@hp.com \
--cc=daniel.lezcano@linaro.org \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=morten.rasmussen@arm.com \
--cc=peterz@infradead.org \
--cc=preeti@linux.vnet.ibm.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.