Re: [tip:sched/core] sched/fair: Correct unit of load_above_capacity

From: Yuyang Du
Date: Tue May 31 2016 - 02:33:01 EST


On Tue, May 24, 2016 at 04:24:01AM +0800, Yuyang Du wrote:
> On Thu, May 19, 2016 at 04:36:38PM +0100, Morten Rasmussen wrote:
> >
> > And this is exactly you get with this patch :-) load_above_capacity
> > (through max_pull) is multiplied by the group capacity to compute that
> > actual amount of [load] to remove:
> >
> > env->imbalance = load_above_capacity * busiest->group_capacity /
> > SCHED_CAPACITY_SCALE
> >
> > = 1*NICE_0_LOAD * 3*SCHED_CAPACITY_SCALE /
> > SCHED_CAPACITY_SCALE
> >
> > = 3*NICE_0_LOAD
> >
> > I don't think we disagree on how it should work :-) Without the capacity
> > scaling in this patch you get:
> >
> > env->imbalance = (6*SCHED_CAPACITY_SCALE - 3*SCHED_CAPACITY_SCALE) *
> > 3*SCHED_CAPACITY_SCALE / SCHED_CAPACITY_SCALE
> >
> > = 9*SCHED_CAPACITY_SCALE
> >
> > Coming back to Yuyang's question. I think it should be NICE_0_LOAD to
> > ensure that the resulting imbalance has the proper unit [load].
>
> Sorry, I'm still confused. After this patch, the unit is indeed [load], the
> load same as the weight visible to the user. However, you literally compared
> it with sg_lb_stats's avg_load and load_per_task, which has the unit of
> load_avg, which is scaled_load_down(NICE_0_LOAD). Am I missing something?

Hello?