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

From: Yuyang Du
Date: Tue May 24 2016 - 00:21:38 EST


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?