Messages in this thread | | | Date | Fri, 24 Jul 2015 17:41:35 +0100 | From | Dietmar Eggemann <> | Subject | Re: [PATCH v10 2/7] sched: Rewrite runnable load and utilization average tracking |
| |
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.
> @@ -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.
-- Dietmar
[...]
| |