From: Frederic Weisbecker <fweisbec@gmail.com>
To: Peter Zijlstra <peterz@infradead.org>
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>
Subject: Re: [RFC PATCH 4/4] sched: Upload nohz full CPU load on task enqueue/dequeue
Date: Wed, 20 Jan 2016 18:21:07 +0100 [thread overview]
Message-ID: <20160120172106.GA27233@lerouge> (raw)
In-Reply-To: <20160120165657.GN6357@twins.programming.kicks-ass.net>
On Wed, Jan 20, 2016 at 05:56:57PM +0100, Peter Zijlstra wrote:
> On Wed, Jan 20, 2016 at 03:54:19PM +0100, Frederic Weisbecker wrote:
>
> > > You can simply do:
> > >
> > > for_each_nohzfull_cpu(cpu) {
> > > struct rq *rq = rq_of(cpu);
> > >
> > > raw_spin_lock(&rq->lock);
> > > update_cpu_load_active(rq);
> > > raw_spin_unlock(&rq->lock);
> > > }
> >
> > But from where should we do that?
>
> house keeper thingy
You mean a periodic call to the above from the housekeepers?
I didn't think about doing that because you nacked that approach with
scheduler_tick(). This isn't much different.
It means the housekeeper is entirely dedicated to full dynticks CPUs.
>
> > Maybe we can do it before we call source/target_load(), on the
> > selected targets needed by the caller? The problem is that if we do
> > that right after a task got enqueued on the nohz runqueue, we may
> > accidentally account it as the whole dynticks frame (I mean, if we get
> > rid of that enqueue/dequeue accounting).
>
> Yes so? What if the current tick happens right after a task get
> enqueued? Then we account the whole tick as !idle, even tough we might
> have been idle for 99% of the time.
Idle is correctly taken care of there because tick_nohz_idle_exit() makes
sure that the whole dynticks load recorded is 0.
>
> Not a problem, this is sampling.
It's ok to have sampling imprecisions indeed but accounting long samples
of singletask time as multitask is rather erratic than imprecise. Now
that's the issue with pure on-demand updates. If we do the remote update
periodically instead, that wouldn't be a problem anymore as it would just
be about precision.
>
> Doing it locally or remotely doesn't matter.
>
> > > Also, since when can we have enqueues/dequeues while NOHZ_FULL ? I
> > > thought that was the 1 task 100% cpu case, there are no
> > > enqueues/dequeues there.
> >
> > That's the most optimized case but we can definetly have small moments
> > with more than one task running. For example if we have a workqueue,
> > or such short and quick tasks.
>
> The moment you have nr_running>1 the tick comes back on.
Sure, but the current nohz frame exit accounting is wrong at it accounts the
newly woken task as the whole tickless load. We need to record the singletask
load on nohz frame entry at least so we can retrieve and account it on nohz exit.
Unless, again, if we do that housekeeping periodic remote update. Then we don't
care locally at all anymore.
next prev parent reply other threads:[~2016-01-20 17:21 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-13 16:01 [RFC PATCH 0/4] sched: Improve cpu load accounting with nohz Frederic Weisbecker
2016-01-13 16:01 ` [PATCH 1/4] sched: Don't account tickless CPU load on tick Frederic Weisbecker
2016-01-19 13:08 ` Peter Zijlstra
2016-01-19 16:22 ` Frederic Weisbecker
2016-01-19 18:56 ` Peter Zijlstra
2016-01-19 22:33 ` Frederic Weisbecker
2016-01-20 5:43 ` Byungchul Park
2016-01-20 10:26 ` Byungchul Park
2016-01-28 16:01 ` Frederic Weisbecker
2016-01-29 9:50 ` Peter Zijlstra
2016-02-01 10:05 ` Byungchul Park
2016-02-01 10:09 ` [PATCH] sched: calculate sched_clock_cpu without tick handling during nohz Byungchul Park
2016-02-01 10:34 ` [PATCH 1/4] sched: Don't account tickless CPU load on tick Peter Zijlstra
2016-02-01 23:51 ` Byungchul Park
2016-02-02 0:50 ` Byungchul Park
2016-02-01 6:33 ` Byungchul Park
2016-01-20 8:42 ` Thomas Gleixner
2016-01-20 17:36 ` Frederic Weisbecker
2016-01-22 8:40 ` Byungchul Park
2016-01-13 16:01 ` [PATCH 2/4] sched: Consolidate nohz CPU load update code Frederic Weisbecker
2016-01-14 2:30 ` Byungchul Park
2016-01-19 13:13 ` Peter Zijlstra
2016-01-20 0:51 ` Byungchul Park
2016-01-14 5:18 ` Byungchul Park
2016-01-19 13:13 ` Peter Zijlstra
2016-01-19 16:49 ` Frederic Weisbecker
2016-01-20 1:41 ` Byungchul Park
2016-02-29 11:14 ` [tip:sched/core] sched/fair: " tip-bot for Frederic Weisbecker
2016-01-13 16:01 ` [RFC PATCH 3/4] sched: Move cpu load stats functions above fair queue callbacks Frederic Weisbecker
2016-01-13 16:01 ` [RFC PATCH 4/4] sched: Upload nohz full CPU load on task enqueue/dequeue Frederic Weisbecker
2016-01-19 13:17 ` Peter Zijlstra
2016-01-19 17:03 ` Frederic Weisbecker
2016-01-20 9:09 ` Peter Zijlstra
2016-01-20 14:54 ` Frederic Weisbecker
2016-01-20 15:11 ` Thomas Gleixner
2016-01-20 15:19 ` Christoph Lameter
2016-01-20 16:52 ` Frederic Weisbecker
2016-01-20 16:45 ` Frederic Weisbecker
2016-01-20 16:56 ` Peter Zijlstra
2016-01-20 17:21 ` Frederic Weisbecker [this message]
2016-01-20 18:25 ` Peter Zijlstra
2016-01-21 13:25 ` Frederic Weisbecker
2016-01-20 9:03 ` Thomas Gleixner
2016-01-20 14:31 ` Frederic Weisbecker
2016-01-20 14:43 ` Thomas Gleixner
2016-01-20 16:40 ` Frederic Weisbecker
2016-01-20 16:42 ` Christoph Lameter
2016-01-20 16:47 ` Frederic Weisbecker
2016-01-14 21:19 ` [RFC PATCH 0/4] sched: Improve cpu load accounting with nohz Dietmar Eggemann
2016-01-14 21:27 ` Peter Zijlstra
2016-01-14 22:23 ` Dietmar Eggemann
2016-01-15 7:07 ` Byungchul Park
2016-01-15 16:56 ` Dietmar Eggemann
2016-01-18 0:23 ` Byungchul Park
2016-01-19 13:04 ` Peter Zijlstra
2016-01-20 0:48 ` Byungchul Park
2016-01-20 13:04 ` Dietmar Eggemann
2016-02-29 11:14 ` [tip:sched/core] sched/fair: Avoid using decay_load_missed() with a negative value tip-bot for Byungchul Park
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=20160120172106.GA27233@lerouge \
--to=fweisbec@gmail.com \
--cc=byungchul.park@lge.com \
--cc=cl@linux.com \
--cc=cmetcalf@ezchip.com \
--cc=efault@gmx.de \
--cc=lcapitulino@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).