From a62a217748339e89c09e6252b05b452009823db2 Mon Sep 17 00:00:00 2001 From: Tengfei Fan Date: Mon, 24 May 2021 14:22:28 +0800 Subject: [PATCH] sched/fair: Add sched_sync_hint_enable node Add sched_sync_hint_enable not to enable/disable sync. Change-Id: I455545487d002b4e3caf96c6cf8569549c3b1bbe Signed-off-by: Tengfei Fan --- kernel/sched/walt/sysctl.c | 10 ++++++++++ kernel/sched/walt/walt.h | 1 + kernel/sched/walt/walt_cfs.c | 3 ++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/kernel/sched/walt/sysctl.c b/kernel/sched/walt/sysctl.c index e7738f397f09..818117c03616 100644 --- a/kernel/sched/walt/sysctl.c +++ b/kernel/sched/walt/sysctl.c @@ -56,6 +56,7 @@ unsigned int sysctl_sched_min_task_util_for_colocation = 35; unsigned int sysctl_sched_many_wakeup_threshold = WALT_MANY_WAKEUP_DEFAULT; const int sched_user_hint_max = 1000; unsigned int sysctl_walt_rtg_cfs_boost_prio = 99; /* disabled by default */ +unsigned int sysctl_sched_sync_hint_enable = 1; /* range is [1 .. INT_MAX] */ static int sysctl_task_read_pid = 1; @@ -661,6 +662,15 @@ struct ctl_table walt_table[] = { .extra1 = SYSCTL_ZERO, .extra2 = SYSCTL_ONE, }, + { + .procname = "sched_sync_hint_enable", + .data = &sysctl_sched_sync_hint_enable, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ZERO, + .extra2 = SYSCTL_ONE, + }, { .procname = "sched_lib_name", .data = sched_lib_name, diff --git a/kernel/sched/walt/walt.h b/kernel/sched/walt/walt.h index e4012126a0b7..5f27c897fe42 100644 --- a/kernel/sched/walt/walt.h +++ b/kernel/sched/walt/walt.h @@ -277,6 +277,7 @@ extern unsigned int sysctl_sched_walt_rotate_big_tasks; extern unsigned int sysctl_sched_task_unfilter_period; extern unsigned int __read_mostly sysctl_sched_asym_cap_sibling_freq_match_pct; extern unsigned int sysctl_walt_low_latency_task_threshold; /* disabled by default */ +extern unsigned int sysctl_sched_sync_hint_enable; extern struct ctl_table walt_table[]; extern struct ctl_table walt_base_table[]; extern void walt_tunables(void); diff --git a/kernel/sched/walt/walt_cfs.c b/kernel/sched/walt/walt_cfs.c index ae996ed8fccc..a647b7a726e7 100644 --- a/kernel/sched/walt/walt_cfs.c +++ b/kernel/sched/walt/walt_cfs.c @@ -544,7 +544,8 @@ int walt_find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, if (sync && (need_idle || (is_rtg && curr_is_rtg))) sync = 0; - if (sync && bias_to_this_cpu(p, cpu, start_cpu)) { + if (sysctl_sched_sync_hint_enable && sync + && bias_to_this_cpu(p, cpu, start_cpu)) { best_energy_cpu = cpu; fbt_env.fastpath = SYNC_WAKEUP; goto done;