Messages in this thread | | | Date | Wed, 16 Sep 2015 02:39:50 +0800 | From | Yuyang Du <> | Subject | Re: [PATCH 5/6] sched/fair: Get rid of scaling utilization by capacity_orig |
| |
On Tue, Sep 15, 2015 at 10:11:41AM -0700, bsegall@google.com wrote: > > > > I guess you are saying we are conflating NICE_0 with NICE_0_LOAD. But to me, > > they are just integer metrics, needing a resolution respectively. That is it. > > Yes this would change nothing at the moment post-expansion, that's not > the point. SLR being 10 bits and the nice-0 being 1024 are completely > and utterly unrelated and the headers should not pretend they need to be > the same value,
I never said they are related, why should they be related. And they need or need not to be the same value, fine.
However, the SLR has to be a value. It is because it mighe be 10 or 20 (LOAD), therefore I make SCHED_RESOLUTION_SHIFT 10 (kind of a denominator). Not the other way around.
We can define SCHED_RESOLUTION_SHIFT 1, and then define SLR = x * SCHED_RESOLUTION_SHIFT with x being a random number, if you must.
And by the way, with SCHED_RESOLUTION_SHIFT, there will not be SLR anymore, we only need SCHED_LOAD_SHIFT, which has a low resolution 1*SCHED_RESOLUTION_SHIFT or a high one 2*SCHED_RESOLUTION_SHIFT. The scale_load*() is the conversion between the resolutions of NICE_0 and NICE_0_LOAD.
> any more than there should be a #define that is shared > with every other use of 1024 in the kernel.
The point really is, metrics (if not many ) need resolution, not just NICE_0_LOAD does. You can choose to either hardcode a number, like SCHED_CAPACITY_SHIFT now, or you can use SCHED_RESOLUTION_SHIFT, which is even as simple as a sign to say what the defined is (the scaled one with a better resolution vs. the original one). I guess this is to say we now have a (no-big-deal) resolution system.
| |