Re: [PATCH 2/2 v4] sched: Rewrite per entity runnable load average tracking

From: Yuyang Du
Date: Tue Jul 29 2014 - 05:46:01 EST

On Tue, Jul 29, 2014 at 11:12:37AM +0200, Vincent Guittot wrote:
> >>
> >> Do you really need to have *w for computing the load_sum ? can't you
> >> only use it when computing the load_avg ?
> >>
> >> sa->load_avg = div_u64(sa->load_sum * w , LOAD_AVG_MAX)
> >>
> >
> > For task, assuming its load.weight does not change much, yes, we can. But in theory, task's
> I would even say that the load_avg of a task should not be impacted by
> an old priority value. Once, the priority of a task is changed, we
> should only take into account this new priority to weight the load_avg
> of the task
> > load.weight can change, and *w in load_sum can take into that change. For group entity
> > and cfs_rq, its load.weight changes all the time, I don't know how to do it without *w
> > for load_sum.
> IMHO, we should apply the same policy than the one i mentioned for
> task. So the load_avg of an entity or a cfs_rq will not be disturbed
> by an old but no more valid weight

Well, I see your point. But the problem is what matters is load_avg vs. load_avg, not a
load_avg itself. So, if load_avg1 discards old weight if weight is changed, but load_avg2
has no weight changed or has weight changed, the comparison load_avg1 vs. load_avg2 is not
fair, but too impacted by the new weight. The point is, we count in history, so connt in the
real history, which is the whole point of why we count the history. Make sense?

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at