From: Peter Zijlstra <peterz@infradead.org>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Byungchul Park <byungchul.park@lge.com>,
Chris Metcalf <cmetcalf@ezchip.com>,
Thomas Gleixner <tglx@linutronix.de>,
Luiz Capitulino <lcapitulino@redhat.com>,
Christoph Lameter <cl@linux.com>,
"Paul E . McKenney" <paulmck@linux.vnet.ibm.com>,
Mike Galbraith <efault@gmx.de>, Rik van Riel <riel@redhat.com>,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH 2/3] sched: Correctly handle nohz ticks cpu load accounting
Date: Fri, 8 Apr 2016 19:40:52 +0200 [thread overview]
Message-ID: <20160408174052.GD1087@worktop> (raw)
In-Reply-To: <20160408125320.GB24956@lerouge>
On Fri, Apr 08, 2016 at 02:53:21PM +0200, Frederic Weisbecker wrote:
> On Fri, Apr 08, 2016 at 11:41:54AM +0200, Peter Zijlstra wrote:
> > On Fri, Apr 08, 2016 at 03:07:12AM +0200, Frederic Weisbecker wrote:
> > > +void cpu_load_update_nohz_start(void)
> > > {
> > > struct rq *this_rq = this_rq();
> > > +
> > > + /*
> > > + * This is all lockless but should be fine. If weighted_cpuload changes
> > > + * concurrently we'll exit nohz. And cpu_load write can race with
> > > + * cpu_load_update_idle() but both updater would be writing the same.
> > > + */
> > > + this_rq->cpu_load[0] = weighted_cpuload(cpu_of(this_rq));
> > > +}
> >
> > There is more to this; this also updates ->cpu_load[0] at possibly much
> > higher frequency than we've done before, while not updating the other
> > ->cpu_load[] members.
> >
> > Now, I'm not sure we care, but it is a bit odd.
>
> This is right. cpu_load[0] is aimed at showing the most recent load,
> without knowing when was the last update (the last tick/update could
> have been recent or not, the readers shouldn't care). Now we can
> indeed worry about it if this field is read altogether with the other
> indexes and those are put into some relation. But it seems that each
> of the rq->cpu_load[i] are read independently without relation or
> comparison. Now really I'm saying that without much assurance as I
> don't know the details of the load balancing code.
>
> If in doubt I can create a field in struct rq to record the tickless
> load instead of storing it in cpu_load[0]. That was in fact the first
> direction I took in my drafts.
Yeah, no I think this is fine, just maybe wants a comment.
> > > +/*
> > > + * Account the tickless load in the end of a nohz frame.
> > > + */
> > > +void cpu_load_update_nohz_stop(void)
> > > +{
> > > unsigned long curr_jiffies = READ_ONCE(jiffies);
> > > + struct rq *this_rq = this_rq();
> > > + unsigned long load;
> > >
> > > if (curr_jiffies == this_rq->last_load_update_tick)
> > > return;
> > >
> > > + load = weighted_cpuload(cpu_of(this_rq));
> > > raw_spin_lock(&this_rq->lock);
> > > + cpu_load_update_nohz(this_rq, curr_jiffies, load);
> > > raw_spin_unlock(&this_rq->lock);
> > > }
> >
> > And this makes us take rq->lock when waking from nohz; a bit
> > unfortunate. Do we really need this though?
>
> Note it was already the case before this patchset, the function was called
> cpu_load_update_nohz() instead.
Ah, ok. I got lost in the whole rename + nohz maze (again). OK no
problem then.
next prev parent reply other threads:[~2016-04-08 17:41 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-08 1:07 [PATCH 0/3] sched: Fix/improve nohz cpu load updates v2 Frederic Weisbecker
2016-04-08 1:07 ` [PATCH 1/3] sched: Gather cpu load functions under a more conventional namespace Frederic Weisbecker
2016-04-08 1:07 ` [PATCH 2/3] sched: Correctly handle nohz ticks cpu load accounting Frederic Weisbecker
2016-04-08 9:41 ` Peter Zijlstra
2016-04-08 12:53 ` Frederic Weisbecker
2016-04-08 17:40 ` Peter Zijlstra [this message]
2016-04-08 1:07 ` [PATCH 3/3] sched: Optimize !CONFIG_NO_HZ_COMMON cpu load updates Frederic Weisbecker
2016-04-08 10:48 ` Peter Zijlstra
2016-04-08 12:55 ` Frederic Weisbecker
2016-04-08 17:44 ` Peter Zijlstra
2016-04-11 13:18 ` Frederic Weisbecker
2016-04-11 14:53 ` Chris Metcalf
2016-04-11 18:21 ` Frederic Weisbecker
2016-04-12 14:23 ` Peter Zijlstra
-- strict thread matches above, loose matches on Subject: below --
2016-04-13 13:56 [PATCH 0/3] sched: Fix/improve nohz cpu load updates v3 Frederic Weisbecker
2016-04-13 13:56 ` [PATCH 2/3] sched: Correctly handle nohz ticks cpu load accounting Frederic Weisbecker
2016-04-18 8:22 ` Byungchul Park
2016-04-18 9:17 ` Byungchul Park
2016-04-18 13:35 ` Frederic Weisbecker
2016-04-19 0:01 ` Byungchul Park
2016-04-19 14:01 ` Frederic Weisbecker
2016-04-20 7:59 ` Wanpeng Li
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=20160408174052.GD1087@worktop \
--to=peterz@infradead.org \
--cc=byungchul.park@lge.com \
--cc=cl@linux.com \
--cc=cmetcalf@ezchip.com \
--cc=efault@gmx.de \
--cc=fweisbec@gmail.com \
--cc=lcapitulino@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulmck@linux.vnet.ibm.com \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
/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.