On Fri, Dec 22, 2017 at 03:32:53PM +0100, Vincent Guittot wrote: > > The only thing I could come up with is running a timer for this :/ That > > would keep the ILB thing running until all load is decayed (have a patch > > for that somewhere). > > IMHO running a timer doesn't sound really great
I tend to agree.. > When we have enough activity on the system, the tick and the periodic > load balance will ensure the update of load of all cpus (including the > idle cpus) at the load balance period pace. > But if we don't have enough activity to trig the periodic update > through ilb or because the system is not overloaded or even almost > idle, we don't have these periodic update anymore. > The goal is to do a lazy update of the blocked load to not hurt too > much power consumption of idle CPUs. When a task wakes up and the > blocked idle load have not been updated for a while, we trig the > update of these blocked loads in parallel to the wake up so the data > will be more accurate for the next events. > It's already too late for the current wake up but that's not a big > deal because the wake up path of a light loaded system is mainly > choosing between previous and current cpu and the load_avg_contrib and > the utilization will have been updated for next events. Right; but I figured we'd try and do it 'right' and see how horrible it is before we try and do funny things.