Messages in this thread | | | From | Vincent Guittot <> | Date | Tue, 8 Sep 2015 15:39:37 +0200 | Subject | Re: [PATCH 5/6] sched/fair: Get rid of scaling utilization by capacity_orig |
| |
On 8 September 2015 at 14:26, Peter Zijlstra <peterz@infradead.org> wrote: > 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.
fair point
> > 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?
Yes this should save 1 left shift and 1 right shift
>>
> > 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
In this case why not simply doing #define SCHED_CAPACITY_SHIFT SCHED_LOAD_SHIFT or the opposite ?
> > somewhere near here. > >
| |