diff options
author | Chungkai Mei <chungkai@google.com> | 2023-05-25 02:48:29 +0000 |
---|---|---|
committer | Chung-Kai (Michael) Mei <chungkai@google.com> | 2023-06-17 10:00:08 +0000 |
commit | fd596bbded565d79de1ede9efe93fa34a9667175 (patch) | |
tree | 7bfdcab6ca7d36ff61bdffe97f67b0a89cb1a22c | |
parent | 8f5ca09a6f41ae7c1dc8a5ccac781c9dc6f0462d (diff) | |
download | gs-fd596bbded565d79de1ede9efe93fa34a9667175.tar.gz |
vh: sched: add knob to control idle balancer
since camera is highly optimized in launched devices
so that we disable idle balancer to avoid influencing previous
optimization.
Bug: 281489720
Change-Id: I94e6dff184dc2d5bb7cf3a2e64485eed383e9da5
Signed-off-by: Chungkai Mei <chungkai@google.com>
(cherry picked from commit e7bb7df5fbf09e794319eb5dd6c078892bc8185e)
-rw-r--r-- | drivers/soc/google/vh/kernel/sched/fair.c | 3 | ||||
-rw-r--r-- | drivers/soc/google/vh/kernel/sched/procfs_node.c | 34 |
2 files changed, 37 insertions, 0 deletions
diff --git a/drivers/soc/google/vh/kernel/sched/fair.c b/drivers/soc/google/vh/kernel/sched/fair.c index a132945ccda6..714640426c92 100644 --- a/drivers/soc/google/vh/kernel/sched/fair.c +++ b/drivers/soc/google/vh/kernel/sched/fair.c @@ -33,6 +33,7 @@ static struct vendor_cfs_util vendor_cfs_util[UG_MAX - 1][CPU_NUM]; extern int vendor_sched_ug_bg_auto_prio; extern unsigned int vendor_sched_util_post_init_scale; extern bool vendor_sched_npi_packing; +extern bool vendor_sched_idle_balancer; unsigned int sched_capacity_margin[CPU_NUM] = { [0 ... CPU_NUM - 1] = DEF_UTIL_THRESHOLD }; unsigned int sched_dvfs_headroom[CPU_NUM] = { [0 ... CPU_NUM - 1] = DEF_UTIL_THRESHOLD }; @@ -2626,6 +2627,8 @@ void sched_newidle_balance_pixel_mod(void *data, struct rq *this_rq, struct rq_f atomic_set(&vrq->num_adpf_tasks, 0); + if (!vendor_sched_idle_balancer) + return; /* * We must set idle_stamp _before_ calling idle_balance(), such that we * measure the duration of idle_balance() as idle time. diff --git a/drivers/soc/google/vh/kernel/sched/procfs_node.c b/drivers/soc/google/vh/kernel/sched/procfs_node.c index c51c3d3f8d0d..a1e831d65a9e 100644 --- a/drivers/soc/google/vh/kernel/sched/procfs_node.c +++ b/drivers/soc/google/vh/kernel/sched/procfs_node.c @@ -24,6 +24,7 @@ DECLARE_PER_CPU(struct uclamp_stats, uclamp_stats); unsigned int __read_mostly vendor_sched_util_post_init_scale = DEF_UTIL_POST_INIT_SCALE; bool __read_mostly vendor_sched_npi_packing = true; //non prefer idle packing +bool __read_mostly vendor_sched_idle_balancer = true; //prefer vendor idle balancer bool __read_mostly vendor_sched_reduce_prefer_idle = true; bool __read_mostly vendor_sched_boost_adpf_prio = true; struct proc_dir_entry *vendor_sched; @@ -1381,6 +1382,38 @@ static ssize_t npi_packing_store(struct file *filp, PROC_OPS_RW(npi_packing); +static int idle_balancer_show(struct seq_file *m, void *v) +{ + seq_printf(m, "%s\n", vendor_sched_idle_balancer ? "true" : "false"); + + return 0; +} + +static ssize_t idle_balancer_store(struct file *filp, + const char __user *ubuf, + size_t count, loff_t *pos) +{ + bool enable; + char buf[MAX_PROC_SIZE]; + + if (count >= sizeof(buf)) + return -EINVAL; + + if (copy_from_user(buf, ubuf, count)) + return -EFAULT; + + buf[count] = '\0'; + + if (kstrtobool(buf, &enable)) + return -EINVAL; + + vendor_sched_idle_balancer = enable; + + return count; +} + +PROC_OPS_RW(idle_balancer); + static int reduce_prefer_idle_show(struct seq_file *m, void *v) { seq_printf(m, "%s\n", vendor_sched_reduce_prefer_idle ? "true" : "false"); @@ -2355,6 +2388,7 @@ static struct pentry entries[] = { PROC_ENTRY(util_threshold), PROC_ENTRY(util_post_init_scale), PROC_ENTRY(npi_packing), + PROC_ENTRY(idle_balancer), PROC_ENTRY(reduce_prefer_idle), PROC_ENTRY(boost_adpf_prio), PROC_ENTRY(dump_task), |