aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavankumar Kondeti <pkondeti@codeaurora.org>2019-09-13 12:26:54 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2020-09-10 19:55:20 -0700
commit8f42144c507b6a95ba1f2a2504a90a0038b82fd3 (patch)
tree2804b5907afae979a3101b84499c9a2d27a6e3f0
parentcdde48be2965bcd52c06ed4169e558718727ebc0 (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.c10
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;