From: Peter Zijlstra <peterz@infradead.org>
To: Yuyang Du <yuyang.du@intel.com>
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Ingo Molnar <mingo@kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Mike Galbraith <umgwanakikbuti@gmail.com>,
Benjamin Segall <bsegall@google.com>,
Paul Turner <pjt@google.com>,
Morten Rasmussen <morten.rasmussen@arm.com>,
Matt Fleming <matt@codeblueprint.co.uk>
Subject: Re: [PATCH 4/4] sched,fair: Fix PELT integrity for new tasks
Date: Fri, 24 Jun 2016 15:03:24 +0200 [thread overview]
Message-ID: <20160624130324.GZ30909@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <20160621045139.GE19934@intel.com>
Sorry, I only spotted your reply yesterday.
On Tue, Jun 21, 2016 at 12:51:39PM +0800, Yuyang Du wrote:
> On Tue, Jun 21, 2016 at 10:41:19AM +0200, Peter Zijlstra wrote:
> > The things we ran into with these patches were that:
> >
> > 1) You need to update the cfs_rq _before_ any entity attach/detach
> > (and might need to update_tg_load_avg when update_cfs_rq_load_avg()
> > returns true).
>
> This is intrinsically an additional update, not a fix to anything. I
> don't think it is a must, but I am fine with it.
> > Esp. 1 is important, because while for mathematically consistency you
> > don't actually need to do this, you only need the entities to be
> > up-to-date with the cfs rq when you attach/detach, but that forgets the
> > temporal aspect of _when_ you do this.
>
> Yes, temporally at any instant the avgs are outdated. But, I can have it,
> and what if I have it?
So I see your point; but there's a big difference between 'instant' and
10ms (HZ=100). So by aging the cfs_rq to the instant we fix two issues:
- that it can be up to 10ms stale
- that is can be 'uninitialized' at all
It also makes code consistent, all other sites also do this.
> > 3) cpu migration is the only exception and uses the last_update_time=0
> > thing -- because refusal to take second rq->lock.
>
> Task's last_update_time means this task is detached from fair queue. This
> (re)definition is by all means much better than migrating. No?
I would maybe redefine it as an up-to-date marker for a migration across
a clock discontinuity. Both CPU migration and group movement suffer from
this, albeit for different reasons.
In the CPU migration case we simply cannot tell time by our refusal to
acquire the old rq lock. So we age to the last time we 'know' and then
mark it up-to-date.
For the cgroup move the timelines simply _are_ discontinuous. So we have
to mark it up-to-date after we update it to the instant of detach, such
that when we attach it to the new group we don't try to age it across
the time difference.
> > Which is why I dislike Yuyang's patches, they create more exceptions
> > instead of applying existing rules (albeit undocumented).
> >
>
> I am thinking about document this really well, like "An art of load tracking:
> accuracy, overhead, and usefulness", seriously.
Any attempt to document all this would be greatly appreciated, although
I would like it to be in comments in the fair.c file itself if possible.
next prev parent reply other threads:[~2016-06-24 13:03 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-17 12:01 [PATCH 0/4] sched/fair: Fix PELT wobblies Peter Zijlstra
2016-06-17 12:01 ` [PATCH 1/4] sched: Optimize fork() paths Peter Zijlstra
2016-06-17 12:01 ` [PATCH 2/4] sched/fair: Fix PELT integrity for new groups Peter Zijlstra
2016-06-17 13:51 ` Vincent Guittot
2016-06-17 12:01 ` [PATCH 3/4] sched,cgroup: Fix cpu_cgroup_fork() Peter Zijlstra
2016-06-17 13:58 ` Vincent Guittot
2016-06-17 14:06 ` Peter Zijlstra
2016-06-17 12:01 ` [PATCH 4/4] sched,fair: Fix PELT integrity for new tasks Peter Zijlstra
2016-06-17 14:09 ` Vincent Guittot
2016-06-17 14:28 ` Peter Zijlstra
2016-06-17 16:02 ` Peter Zijlstra
2016-06-17 16:14 ` Vincent Guittot
2016-06-17 16:18 ` Peter Zijlstra
2016-06-19 22:55 ` Yuyang Du
2016-06-20 9:23 ` Vincent Guittot
2016-06-20 9:52 ` Peter Zijlstra
2016-06-20 10:07 ` Vincent Guittot
2016-06-21 11:43 ` Peter Zijlstra
2016-06-21 12:36 ` Vincent Guittot
2016-06-21 12:47 ` Peter Zijlstra
2016-06-21 12:56 ` Vincent Guittot
2016-06-20 11:35 ` Dietmar Eggemann
2016-06-20 12:35 ` Vincent Guittot
2016-06-20 14:49 ` Dietmar Eggemann
2016-06-21 8:41 ` Peter Zijlstra
2016-06-21 4:51 ` Yuyang Du
2016-06-24 13:03 ` Peter Zijlstra [this message]
2016-08-09 23:19 ` Yuyang Du
2016-06-21 13:17 ` Peter Zijlstra
2016-06-21 13:29 ` Vincent Guittot
2016-06-22 11:46 ` Peter Zijlstra
2016-06-23 15:35 ` Dietmar Eggemann
2016-06-23 17:15 ` Peter Zijlstra
2016-06-20 14:27 ` Peter Zijlstra
2016-06-23 11:19 ` Peter Zijlstra
2016-08-01 7:30 ` Wanpeng Li
2016-08-01 9:31 ` Mike Galbraith
2016-08-01 9:56 ` Wanpeng Li
2016-08-01 11:52 ` 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=20160624130324.GZ30909@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@codeblueprint.co.uk \
--cc=mingo@kernel.org \
--cc=morten.rasmussen@arm.com \
--cc=pjt@google.com \
--cc=umgwanakikbuti@gmail.com \
--cc=vincent.guittot@linaro.org \
--cc=yuyang.du@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox