Re: sched: Consequences of integrating the Per Entity Load TrackingMetric into the Load Balancer

From: Alex Shi
Date: Wed Jan 16 2013 - 09:08:13 EST


On 01/08/2013 04:41 PM, Preeti U Murthy wrote:
> Hi Mike,
>
> Thank you very much for such a clear and comprehensive explanation.
> So when I put together the problem and the proposed solution pieces in the current
> scheduler scalability,the following was what I found:
>
> 1. select_idle_sibling() is needed as an agent to correctly find the right cpu for wake
> up tasks to go to."Correctly" would be to find an idle cpu at the lowest cost possible.
> 2."Cost could be lowered" either by optimizing the order of searching for an idle cpu or
> restricting the search to a few cpus alone.
> 3. The former has the problem that it would not prevent bouncing tasks all over the domain
> sharing an L3 cache,which could potentially affect the fast moving tasks.
> 4. The latter has the problem that it is not aggressive enough in finding an idle cpu.
>
> This is some tangled problem,but I think the solution at best could be smoothed to a a flowchart.
>
> STEP1 STEP2 STEP3
> _____________________
> | |
> |See if the idle buddy|No _________________ Yes ________________
> |is free at all sched |---->| Do we search the|----> |Optimized search|
> |domains | |sched domains | |________________|
> |_____________________| |for an idle cpu | |
> |Yes |_________________| \|/
> \|/ |No: saturated Return target cpu
> Return \|/ system
> cpu buddy Return prev_cpu
>



I re-written the patch as following. hackbench/aim9 doest show clean performance change.
Actually we can get some profit. it also will be very slight. :)
BTW, it still need another patch before apply this. Just to show the logical.

===========