diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 417b373e4074..0784864eeb30 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6469,6 +6469,19 @@ static inline int find_best_target(struct task_struct *p, int *backup_cpu, continue; } + /* + * Enforce EAS mode + * + * For non latency sensitive tasks, skip CPUs that + * will be overutilized by moving the task there. + * + * The goal here is to remain in EAS mode as long as + * possible at least for !prefer_idle tasks. + */ + if ((new_util * capacity_margin) > + (capacity_orig * SCHED_CAPACITY_SCALE)) + continue; + /* * Case B) Non latency sensitive tasks on IDLE CPUs. *