From: Daeyeong Lee Date: Mon, 3 Sep 2018 06:18:48 +0000 (+0900) Subject: [COMMON] sched: ems: Modify ontime_can_migration condition X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a81551d505d8328481811a09c5b4550b843ae504;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git [COMMON] sched: ems: Modify ontime_can_migration condition Change-Id: I8e4c0fd4843fd5b84f6a8d1340b11f7f1a1b800b Signed-off-by: Daeyeong Lee --- diff --git a/kernel/sched/ems/ontime.c b/kernel/sched/ems/ontime.c index 37f2cf1f9ba5..1547825de264 100644 --- a/kernel/sched/ems/ontime.c +++ b/kernel/sched/ems/ontime.c @@ -643,31 +643,19 @@ int ontime_can_migration(struct task_struct *p, int dst_cpu) } /* - * When runqueue is busy, check whether this task is heaviest. - * If this task is not heaviest in runqueue, allow it to be migrated. + * When runqueue is overloaded, check whether cpu's util exceed coverage ratio. + * If so, allow the task to be migrated. */ if (cpu_rq(src_cpu)->nr_running > 1) { - struct task_struct *curr = cpu_curr(src_cpu); - struct sched_entity *se = __pick_first_entity(p->se.cfs_rq); - int count; + unsigned long cpu_util = cpu_util_wake(src_cpu, p); + unsigned long util = task_util(p); + unsigned long coverage_ratio = get_coverage_ratio(src_cpu); - /* Firstly, compare with curr running task */ - if (ontime_load_avg(p) < ontime_load_avg(curr)) { - trace_ems_ontime_check_migrate(p, dst_cpu, true, "busy runqueue"); + if ((cpu_util * 100 >= capacity_orig_of(src_cpu) * coverage_ratio) + && (cpu_util > util)) { + trace_ems_ontime_check_migrate(p, dst_cpu, true, "exceed coverage"); return true; } - - /* Secondly, compare with tasks in rq */ - for (count = 0; se && count < TASK_TRACK_COUNT; - se = __pick_next_entity(se), count++) { - if (entity_is_cfs_rq(se)) - continue; - - if (ontime_load_avg(p) < ontime_load_avg(task_of(se))) { - trace_ems_ontime_check_migrate(p, dst_cpu, true, "busy runqueue"); - return true; - } - } } trace_ems_ontime_check_migrate(p, dst_cpu, false, "heavy task");