From: Yuyang Du <yuyang.du@intel.com>
To: Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: "mingo@kernel.org" <mingo@kernel.org>,
"peterz@infradead.org" <peterz@infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"pjt@google.com" <pjt@google.com>,
"bsegall@google.com" <bsegall@google.com>,
Morten Rasmussen <Morten.Rasmussen@arm.com>,
"vincent.guittot@linaro.org" <vincent.guittot@linaro.org>,
"umgwanakikbuti@gmail.com" <umgwanakikbuti@gmail.com>,
"len.brown@intel.com" <len.brown@intel.com>,
"rafael.j.wysocki@intel.com" <rafael.j.wysocki@intel.com>,
"arjan@linux.intel.com" <arjan@linux.intel.com>,
"fengguang.wu@intel.com" <fengguang.wu@intel.com>
Subject: Re: [PATCH v10 2/7] sched: Rewrite runnable load and utilization average tracking
Date: Mon, 27 Jul 2015 04:24:28 +0800 [thread overview]
Message-ID: <20150726202428.GF28512@intel.com> (raw)
In-Reply-To: <55B26ABF.2060907@arm.com>
Hi Dietmar,
On Fri, Jul 24, 2015 at 05:41:35PM +0100, Dietmar Eggemann wrote:
> Hi Yuyang,
>
> On 15/07/15 01:04, Yuyang Du wrote:
>
> [...]
>
> > @@ -4674,7 +4487,7 @@ static long effective_load(struct task_group *tg, int cpu, long wl, long wg)
> > /*
> > * w = rw_i + @wl
> > */
> > - w = se->my_q->load.weight + wl;
> > + w = se->my_q->avg.load_avg + wl;
> >
> > /*
> > * wl = S * s'_i; see (2)
>
> There is a comment 'Per the above, wl is the new *se->load.weight*
> value'. This should be replaced by *se->avg.load_avg*. Also the function
> header explains the functionality of effective_load() based on weight
> and not sched_avg::load_avg.
I think it is already replaced when effective_load is called.
About load.weight vs. load_avg, see below.
> > @@ -4695,7 +4508,7 @@ static long effective_load(struct task_group *tg, int cpu, long wl, long wg)
> > /*
> > * wl = dw_i = S * (s'_i - s_i); see (3)
> > */
> > - wl -= se->load.weight;
> > + wl -= se->avg.load_avg;
> >
> > /*
> > * Recursively apply this logic to all parent groups to compute
> > @@ -4769,14 +4582,14 @@ static int wake_affine(struct sched_domain *sd, struct task_struct *p, int sync)
> > */
> > if (sync) {
> > tg = task_group(current);
> > - weight = current->se.load.weight;
> > + weight = current->se.avg.load_avg;
> >
> > this_load += effective_load(tg, this_cpu, -weight, -weight);
> > load += effective_load(tg, prev_cpu, 0, -weight);
> > }
> >
> > tg = task_group(p);
> > - weight = p->se.load.weight;
> > + weight = p->se.avg.load_avg;
>
> You changed cfs_rq->load.weight to cfs_rq->avg.load_avg and
> se->load.weight to se->avg.load_avg in effective_load() and
> wake_affine() in v2.
> I wasn't able to find explanation why you did this. I mean we still have
> to maintain 'struct load_weight' on cfs_rq's and se's representing tg's.
Yes, I might not have explained it specifically, but back then, it was
simply motivated/reasoned by consistently expressing the load with load_avg.
As of now, it is sort of the same, adding as I previously stated, as far
as group SE is concerned, we use load_avg, instread of runnable_load_avg
or load.weight.
As was also suggested by Morten, we need to revisit the bulk of the load
balancing code a lot, including rethinking about what to use: load.weight,
or runnable_load_avg, or load_avg. I think this patch series is just a
starter.
Thanks,
Yuyang
next prev parent reply other threads:[~2015-07-27 4:15 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-15 0:04 [PATCH v10 0/7] sched: Rewrite runnable load and utilization average tracking Yuyang Du
2015-07-15 0:04 ` [PATCH v10 1/7] sched: Remove rq's runnable avg Yuyang Du
2015-08-03 17:10 ` [tip:sched/core] sched/fair: " tip-bot for Yuyang Du
2015-07-15 0:04 ` [PATCH v10 2/7] sched: Rewrite runnable load and utilization average tracking Yuyang Du
2015-07-24 16:41 ` Dietmar Eggemann
2015-07-26 20:24 ` Yuyang Du [this message]
2015-08-03 17:10 ` [tip:sched/core] sched/fair: " tip-bot for Yuyang Du
2015-07-15 0:04 ` [PATCH v10 3/7] sched: Implement update_blocked_averages() for CONFIG_FAIR_GROUP_SCHED=n Yuyang Du
2015-08-03 17:11 ` [tip:sched/core] sched/fair: " tip-bot for Vincent Guittot
2015-07-15 0:04 ` [PATCH v10 4/7] sched: Init cfs_rq's sched_entity load average Yuyang Du
2015-08-03 17:11 ` [tip:sched/core] sched/fair: Init cfs_rq' s " tip-bot for Yuyang Du
2015-07-15 0:04 ` [PATCH v10 5/7] sched: Remove task and group entity load when they are dead Yuyang Du
2015-08-03 17:11 ` [tip:sched/core] sched/fair: " tip-bot for Yuyang Du
2015-07-15 0:04 ` [PATCH v10 6/7] sched: Provide runnable_load_avg back to cfs_rq Yuyang Du
2015-07-21 1:08 ` Boqun Feng
2015-07-21 0:44 ` Yuyang Du
2015-07-21 10:18 ` Boqun Feng
2015-07-21 10:29 ` Boqun Feng
2015-07-26 18:43 ` Yuyang Du
2015-07-27 3:21 ` Boqun Feng
2015-07-26 19:56 ` Yuyang Du
2015-07-27 4:04 ` Boqun Feng
2015-07-26 20:34 ` Yuyang Du
2015-07-27 5:16 ` Boqun Feng
2015-07-27 3:29 ` Boqun Feng
2015-07-22 2:19 ` Boqun Feng
2015-07-26 19:45 ` Yuyang Du
2015-08-03 17:12 ` [tip:sched/core] sched/fair: " tip-bot for Yuyang Du
2015-07-15 0:04 ` [PATCH v10 7/7] sched: Clean up load average references Yuyang Du
2015-07-24 16:41 ` Dietmar Eggemann
2015-07-26 20:31 ` Yuyang Du
2015-08-03 17:12 ` [tip:sched/core] sched/fair: " tip-bot for Yuyang Du
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=20150726202428.GF28512@intel.com \
--to=yuyang.du@intel.com \
--cc=Morten.Rasmussen@arm.com \
--cc=arjan@linux.intel.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=fengguang.wu@intel.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=rafael.j.wysocki@intel.com \
--cc=umgwanakikbuti@gmail.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.