On 27 August 2015 at 18:50, Jason Low jason.low2@hp.com wrote:
On Thu, 2015-08-27 at 13:21 +0200, Vincent Guittot wrote:
Hi,
On 3 August 2015 at 11:55, Vincent Guittot vincent.guittot@linaro.org wrote:
Since commit d4573c3e1c99 ("sched: Improve load balancing in the presence of idle CPUs"), the ILB CPU starts with the idle load balancing of other idle CPUs and finishes with itself in order to speed up the spread of tasks in all idle CPUs.
The this_rq->next_balance is still used in nohz_idle_balance as an intermediate step to gather the shortest next balance before updating nohz.next_balance. But the former has not been updated yet and is likely to be set with the current jiffies. As a result, the nohz.next_balance will be set with current jiffies instead of the real next balance date. This generates spurious kicks of nohz ilde balance.
nohz_idle_balance must set the nohz.next_balance without taking into account this_rq->next_balance which is not updated yet. Then, this_rq will update nohz.next_update with its next_balance once updated and if necessary.
Signed-off-by: Vincent Guittot vincent.guittot@linaro.org
Acked-by: Jason Low jason.low2@hp.com
Thanks