|
@@ -644,7 +644,7 @@ struct rq {
|
|
|
|
|
|
unsigned long cpu_power;
|
|
unsigned long cpu_power;
|
|
|
|
|
|
- unsigned char idle_at_tick;
|
|
|
|
|
|
+ unsigned char idle_balance;
|
|
/* For active balancing */
|
|
/* For active balancing */
|
|
int post_schedule;
|
|
int post_schedule;
|
|
int active_balance;
|
|
int active_balance;
|
|
@@ -2751,8 +2751,10 @@ void scheduler_ipi(void)
|
|
/*
|
|
/*
|
|
* Check if someone kicked us for doing the nohz idle load balance.
|
|
* Check if someone kicked us for doing the nohz idle load balance.
|
|
*/
|
|
*/
|
|
- if (unlikely(got_nohz_idle_kick() && !need_resched()))
|
|
|
|
|
|
+ if (unlikely(got_nohz_idle_kick() && !need_resched())) {
|
|
|
|
+ this_rq()->idle_balance = 1;
|
|
raise_softirq_irqoff(SCHED_SOFTIRQ);
|
|
raise_softirq_irqoff(SCHED_SOFTIRQ);
|
|
|
|
+ }
|
|
irq_exit();
|
|
irq_exit();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -4247,7 +4249,7 @@ void scheduler_tick(void)
|
|
perf_event_task_tick();
|
|
perf_event_task_tick();
|
|
|
|
|
|
#ifdef CONFIG_SMP
|
|
#ifdef CONFIG_SMP
|
|
- rq->idle_at_tick = idle_cpu(cpu);
|
|
|
|
|
|
+ rq->idle_balance = idle_cpu(cpu);
|
|
trigger_load_balance(rq, cpu);
|
|
trigger_load_balance(rq, cpu);
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|