diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched/fair.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 5e3add351b89..24a5ee63718f 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -9790,6 +9790,15 @@ get_sd_balance_interval(struct sched_domain *sd, int cpu_busy) /* scale ms to jiffies */ interval = msecs_to_jiffies(interval); + + /* + * Reduce likelihood of busy balancing at higher domains racing with + * balancing at lower domains by preventing their balancing periods + * from being multiples of each other. + */ + if (cpu_busy) + interval -= 1; + interval = clamp(interval, 1UL, max_load_balance_interval); return interval; |