From 13b036b5ef97877190f73284861f06164d3084cf Mon Sep 17 00:00:00 2001 From: Rishabh Bhatnagar Date: Tue, 11 May 2021 10:43:20 -0700 Subject: [PATCH] sched: Add util busy hist sysctl tunables Add util_busy_hist sysctl tunables which solely look at the sum of cpu_util across CPUs as a metric for LPM biasing on any/all CPUs. Change-Id: Ib981c21a58059ef02772ee797808c5f30547a688 Signed-off-by: Rishabh Bhatnagar --- kernel/sched/walt/sysctl.c | 34 ++++++++++++++++++++++++++++++++++ kernel/sched/walt/walt.h | 3 +++ 2 files changed, 37 insertions(+) diff --git a/kernel/sched/walt/sysctl.c b/kernel/sched/walt/sysctl.c index 818117c03616..a005b3004413 100644 --- a/kernel/sched/walt/sysctl.c +++ b/kernel/sched/walt/sysctl.c @@ -34,6 +34,9 @@ unsigned int sysctl_sched_coloc_busy_hyst_enable_cpus; unsigned int sysctl_sched_coloc_busy_hyst_cpu[WALT_NR_CPUS]; unsigned int sysctl_sched_coloc_busy_hyst_max_ms; unsigned int sysctl_sched_coloc_busy_hyst_cpu_busy_pct[WALT_NR_CPUS]; +unsigned int sysctl_sched_util_busy_hyst_enable_cpus; +unsigned int sysctl_sched_util_busy_hyst_cpu[WALT_NR_CPUS]; +unsigned int sysctl_sched_util_busy_hyst_cpu_util[WALT_NR_CPUS]; unsigned int sysctl_sched_boost; unsigned int sysctl_sched_wake_up_idle[2]; unsigned int sysctl_input_boost_ms; @@ -614,6 +617,33 @@ struct ctl_table walt_table[] = { .extra1 = SYSCTL_ZERO, .extra2 = &one_hundred, }, + { + .procname = "sched_util_busy_hysteresis_enable_cpus", + .data = &sysctl_sched_util_busy_hyst_enable_cpus, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = sched_busy_hyst_handler, + .extra1 = SYSCTL_ZERO, + .extra2 = &two_hundred_fifty_five, + }, + { + .procname = "sched_util_busy_hyst_cpu_ns", + .data = &sysctl_sched_util_busy_hyst_cpu, + .maxlen = sizeof(unsigned int) * WALT_NR_CPUS, + .mode = 0644, + .proc_handler = sched_busy_hyst_handler, + .extra1 = SYSCTL_ZERO, + .extra2 = &ns_per_sec, + }, + { + .procname = "sched_util_busy_hyst_cpu_util", + .data = &sysctl_sched_util_busy_hyst_cpu_util, + .maxlen = sizeof(unsigned int) * WALT_NR_CPUS, + .mode = 0644, + .proc_handler = sched_busy_hyst_handler, + .extra1 = SYSCTL_ZERO, + .extra2 = &one_thousand, + }, { .procname = "sched_ravg_window_nr_ticks", .data = &sysctl_sched_ravg_window_nr_ticks, @@ -781,10 +811,14 @@ void walt_tunables(void) for (i = 0; i < WALT_NR_CPUS; i++) { sysctl_sched_coloc_busy_hyst_cpu[i] = 39000000; sysctl_sched_coloc_busy_hyst_cpu_busy_pct[i] = 10; + sysctl_sched_util_busy_hyst_cpu[i] = 5000000; + sysctl_sched_util_busy_hyst_cpu_util[i] = 15; } sysctl_sched_coloc_busy_hyst_enable_cpus = 112; + sysctl_sched_util_busy_hyst_enable_cpus = 255; + sysctl_sched_coloc_busy_hyst_max_ms = 5000; sched_ravg_window = DEFAULT_SCHED_RAVG_WINDOW; diff --git a/kernel/sched/walt/walt.h b/kernel/sched/walt/walt.h index 61585a487379..b0dc1690ae15 100644 --- a/kernel/sched/walt/walt.h +++ b/kernel/sched/walt/walt.h @@ -210,6 +210,9 @@ extern unsigned int sysctl_sched_coloc_busy_hyst_enable_cpus; extern unsigned int sysctl_sched_coloc_busy_hyst_cpu[WALT_NR_CPUS]; extern unsigned int sysctl_sched_coloc_busy_hyst_max_ms; extern unsigned int sysctl_sched_coloc_busy_hyst_cpu_busy_pct[WALT_NR_CPUS]; +extern unsigned int sysctl_sched_util_busy_hyst_enable_cpus; +extern unsigned int sysctl_sched_util_busy_hyst_cpu[WALT_NR_CPUS]; +extern unsigned int sysctl_sched_util_busy_hyst_cpu_util[WALT_NR_CPUS]; extern unsigned int sysctl_sched_boost; /* To/from userspace */ extern unsigned int sysctl_sched_capacity_margin_up[MAX_MARGIN_LEVELS]; extern unsigned int sysctl_sched_capacity_margin_down[MAX_MARGIN_LEVELS];