sched/fair: Don't place wakee on waker cpu if colocate enabled

If both wakee and waker are in top-app,don't place wakee on waker
cpu, because most of this case waker is not going to sleep,this
will cause waker preempted and lead high runnable time,so let
scheduler to select the best cpu in this case.

Change-Id: If6eb3c0acb202197e9dd90205c581398ac049649
Signed-off-by: Biao Long <blong@codeaurora.org>
This commit is contained in:
Biao Long 2019-12-19 16:31:31 +08:00 • committed by Satya Durga Srinivasu Prabhala
commit e24b1df8d9

View file

@ -7003,7 +7003,7 @@ int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu,
struct perf_domain *pd;
unsigned long cur_energy;
cpumask_t *candidates;
bool is_rtg;
bool is_rtg, curr_is_rtg;
struct find_best_target_env fbt_env;
bool need_idle = wake_to_idle(p);
int placement_boost = task_boost_policy(p);
@ -7017,6 +7017,7 @@ int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu,
goto eas_not_ready;
is_rtg = task_in_related_thread_group(p);
curr_is_rtg = task_in_related_thread_group(cpu_rq(cpu)->curr);
fbt_env.fastpath = 0;
@ -7027,7 +7028,7 @@ int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu,
candidates = this_cpu_ptr(&energy_cpus);
cpumask_clear(candidates);
if (need_idle)
if (sync && (need_idle || (is_rtg && curr_is_rtg)))
sync = 0;
if (sync && bias_to_this_cpu(p, cpu, start_cpu)) {