Messages in this thread |  | | Date | Fri, 10 Apr 2015 14:07:41 +0530 | From | Srikar Dronamraju <> | Subject | Re: sched: Improve load balancing in the presence of idle CPUs |
| |
> > > > > > #ifdef CONFIG_NO_HZ_COMMON > > > +static inline bool nohz_kick_needed(struct rq *rq); > > > + > > > +static inline void pass_nohz_balance(struct rq *this_rq, int this_cpu) > > > +{ > > > + clear_bit(NOHZ_BALANCE_KICK, nohz_flags(this_cpu)); > > > + nohz.next_balance = jiffies; > > > > Why are we updating nohz.next_balance here? > > This was just to make sure that since we're continuing the balancing on > another CPU that the nohz next_balance is guaranteed to be "now". >
Since we are in nohz_idle_balance(), nohz.next_balance is guaranteed be less than now. We do check for time_before(now, nohz.next_balance) in nohz_kick_needed(). So in effect we are incrementing the nohz.next_balance.
While updating nohz.next_balance may not cause any issues, it atleast look redundant to me.
At this point, I also wanted to understand why we do "nohz.next_balance++" nohz_balancer_kick()?
> > > + if (nohz_kick_needed(this_rq)) > > > + nohz_balancer_kick(); > > > +} > > > + > > > /*
-- Thanks and Regards Srikar Dronamraju
|  |