* Peter Zijlstra a.p.zijlstra@chello.nl wrote:
[...]
So a sane series would introduce maybe two functions: cpu_load() and task_load() and use those where we now use rq->load.weight and p->se.load.weight for load balancing purposes. Implement these functions using those two expression. So effectively this patch is a NOP.
Secondly, switch these two functions over to the per-task based averages.
Tada! all done. The load balancer will then try and equalize effective load instead of instant load.
It will do the 3x10% vs 100% thing correctly with just those two patches. Simply because it will report a lower cpu-load for the 3x10% case than it will for the 100% case, no need to go fudge about in the load-balance internals.
Once you've got this correctly done, you can go change balancing to better utilize the new metric, like use the effective load instead of nr_running against the capacity and things like that. But for every such change you want to be very careful and run all the benchmarks you can find -- in fact you want to do that after the 2nd patch too.
If anyone posted that simple two-patch series that switches over to the new load metrics I'd be happy to test the performance of those.
Having two parallel load metrics is really not something that we should tolerate for too long.
Thanks,
Ingo