diff options
| author | Todd Kjos <tkjos@google.com> | 2016-07-13 16:13:47 -0700 |
|---|---|---|
| committer | John Stultz <john.stultz@linaro.org> | 2016-08-11 14:26:48 -0700 |
| commit | d4cda03828f5c8eae35efcb08f520f8f1a35950e (patch) | |
| tree | 08e7148be4d1504ec2ca21303fef762717e20d4c /kernel | |
| parent | 23ed57dbcc14871af54db667d460aba64eaf6efe (diff) | |
sched: use util instead of capacity to select busy cpu
If cpus are busy, the cpu selection algorithm was favoring
cpus with lower capacity. This can result in uneven packing
since there will be a bias toward the same cpu until there
is a capacity change. Instead use the utilization so there
is immediate feedback as tasks are assigned
BUG: 30115868
Change-Id: I0ac7ae3ab5d8f2f5a5838c29bb6da2c3e8ef44e8
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched/fair.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 0b065ff2f4f3..7b6e95aa7360 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5593,7 +5593,7 @@ static inline int find_best_target(struct task_struct *p, bool boosted) { int iter_cpu; int target_cpu = -1; - int target_capacity = 0; + int target_util = 0; int backup_capacity = 0; int best_idle_cpu = -1; int best_idle_cstate = INT_MAX; @@ -5649,10 +5649,10 @@ static inline int find_best_target(struct task_struct *p, bool boosted) if (new_util < cur_capacity) { if (cpu_rq(i)->nr_running) { - if (target_capacity == 0 || - target_capacity > cur_capacity) { + if (target_util == 0 || + target_util > new_util) { target_cpu = i; - target_capacity = cur_capacity; + target_util = new_util; } } else if (!boosted) { if (best_idle_cpu < 0 || |
