Messages in this thread | | | Date | Tue, 8 Sep 2015 14:26:06 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 5/6] sched/fair: Get rid of scaling utilization by capacity_orig |
| |
On Tue, Sep 08, 2015 at 09:22:05AM +0200, Vincent Guittot wrote: > No, but > sa->util_avg = (sa->util_sum << SCHED_CAPACITY_SHIFT) / LOAD_AVG_MAX; > will fix the unit issue.
Tricky that, LOAD_AVG_MAX very much relies on the unit being 1<<10.
And where load_sum already gets a factor 1024 from the weight multiplication, util_sum does not get such a factor, and all the scaling we do on it loose bits.
So at the moment we go compute the util_avg value, we need to inflate util_sum with an extra factor 1024 in order to make it work.
And seeing that we do the shift up on sa->util_sum without consideration of overflow, would it not make sense to add that factor before the scaling and into the addition?
Now, given all that, units are a complete mess here, and I'd not mind something like:
#if (SCHED_LOAD_SHIFT - SCHED_LOAD_RESOLUTION) != SCHED_CAPACITY_SHIFT #error "something usefull" #endif
somewhere near here.
| |