Re: [RFC PATCH] sched: fix the nonsense shares when load of cfs_rq is too, small

From: Peter Zijlstra
Date: Wed Mar 04 2020 - 04:52:37 EST


On Wed, Mar 04, 2020 at 09:47:34AM +0100, Vincent Guittot wrote:
> you will add +1 of nice prio for each device
>
> should we use instead
> # define scale_load_down(w) ((w >> SCHED_FIXEDPOINT_SHIFT) ? (w >>
> SCHED_FIXEDPOINT_SHIFT) : MIN_SHARES)

That's '((w >> SHIFT) ?: MIN_SHARES)', but even that is not quite right.

I think we want something like:

#define scale_load_down(w) \
({ unsigned long ___w = (w); \
if (___w) \
____w = max(MIN_SHARES, ___w >> SHIFT); \
___w; })

That is, we very much want to retain 0 I'm thinking.