diff options
author | Pavankumar Kondeti <pkondeti@codeaurora.org> | 2017-10-16 14:09:29 +0530 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-12-23 23:43:40 +0200 |
commit | 5c43a2afb87ea44e4d52585989a76b1e6a2e6ce6 (patch) | |
tree | 21e47dbfdfdc56c4aac8f476c77e8f3532f733a7 /kernel/sched/fair.c | |
parent | 3d6ed948d991660254494856baabbf03e1915751 (diff) |
core_ctl: Consider high irq loaded CPU as busy
Currently a CPU is considered as busy if it's utilization in
the last window exceeds busy threshold. A CPU loaded with
hardirqs/softirqs does not necessarily have high utilization.
Isolating such CPUs may hurt performance as it involves waking
up the CPU frequently from deep c-state. Prevent isolating
high irq loaded CPUs by considering them as busy.
Change-Id: I169b69f6003eb59a126c8a16b67b65be2aa7af40
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r-- | kernel/sched/fair.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 18ce8cb02272..ffc2c71d0374 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3001,6 +3001,8 @@ struct cpu_select_env *env, struct cluster_cpu_stats *stats) int i; struct cpumask search_cpus; + extern int num_clusters; + while (!bitmap_empty(env->backup_list, num_clusters)) { next = next_candidate(env->backup_list, 0, num_clusters); __clear_bit(next->id, env->backup_list); @@ -3024,6 +3026,8 @@ next_best_cluster(struct sched_cluster *cluster, struct cpu_select_env *env, { struct sched_cluster *next = NULL; + extern int num_clusters; + __clear_bit(cluster->id, env->candidate_list); if (env->rtg && preferred_cluster(cluster, env->p)) |