diff options
author | Pavankumar Kondeti <pkondeti@codeaurora.org> | 2019-09-13 12:26:54 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2020-09-10 19:55:20 -0700 |
commit | 8f42144c507b6a95ba1f2a2504a90a0038b82fd3 (patch) | |
tree | 2804b5907afae979a3101b84499c9a2d27a6e3f0 | |
parent | cdde48be2965bcd52c06ed4169e558718727ebc0 (diff) |
sched/fair: Improve the schedulerLA.UM.8.13.r1-10100-SAIPAN.0
This change is for general scheduler improvement.
Change-Id: I19ec68fe40d931b501ea84a9306d04fcb58db60d
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
-rw-r--r-- | kernel/sched/fair.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 9eb76225a31a..8f98203d78dc 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6950,7 +6950,7 @@ static void find_best_target(struct sched_domain *sd, cpumask_t *cpus, if (prefer_idle && boosted) target_capacity = 0; - if (fbt_env->strict_max) + if (fbt_env->strict_max || p->in_iowait) most_spare_wake_cap = LONG_MIN; /* Find start CPU based on boost value */ @@ -7267,6 +7267,10 @@ static void find_best_target(struct sched_domain *sd, cpumask_t *cpus, next_group_higher_cap = (capacity_orig_of(group_first_cpu(sg)) < capacity_orig_of(group_first_cpu(sg->next))); + if (p->in_iowait && !next_group_higher_cap && + most_spare_cap_cpu != -1) + break; + /* * If we've found a cpu, but the boost is ON_ALL we continue * visiting other clusters. If the boost is ON_BIG we visit @@ -8672,6 +8676,10 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) if (!can_migrate_boosted_task(p, env->src_cpu, env->dst_cpu)) return 0; + if (p->in_iowait && is_min_capacity_cpu(env->dst_cpu) && + !is_min_capacity_cpu(env->src_cpu)) + return 0; + if (!cpumask_test_cpu(env->dst_cpu, &p->cpus_allowed)) { int cpu; |