Loading include/linux/sched/sysctl.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ extern unsigned int sysctl_sched_cpu_high_irqload; extern unsigned int sysctl_sched_boost; extern unsigned int sysctl_sched_group_upmigrate_pct; extern unsigned int sysctl_sched_group_downmigrate_pct; extern unsigned int sysctl_sched_conservative_pl; extern unsigned int sysctl_sched_walt_rotate_big_tasks; extern unsigned int sysctl_sched_min_task_util_for_boost; extern unsigned int sysctl_sched_min_task_util_for_colocation; Loading kernel/sched/cpufreq_schedutil.c +15 −2 Original line number Diff line number Diff line Loading @@ -139,6 +139,15 @@ static inline bool use_pelt(void) #endif } static inline bool conservative_pl(void) { #ifdef CONFIG_SCHED_WALT return sysctl_sched_conservative_pl; #else return false; #endif } static bool sugov_up_down_rate_limit(struct sugov_policy *sg_policy, u64 time, unsigned int next_freq) { Loading Loading @@ -571,6 +580,7 @@ static void sugov_walt_adjust(struct sugov_cpu *sg_cpu, unsigned long *util, unsigned long nl = sg_cpu->walt_load.nl; unsigned long cpu_util = sg_cpu->util; bool is_hiload; unsigned long pl = sg_cpu->walt_load.pl; if (use_pelt()) return; Loading @@ -588,8 +598,11 @@ static void sugov_walt_adjust(struct sugov_cpu *sg_cpu, unsigned long *util, if (is_hiload && nl >= mult_frac(cpu_util, NL_RATIO, 100)) *util = *max; if (sg_policy->tunables->pl) *util = max(*util, sg_cpu->walt_load.pl); if (sg_policy->tunables->pl) { if (conservative_pl()) pl = mult_frac(pl, TARGET_LOAD, 100); *util = max(*util, pl); } } /* Loading kernel/sched/walt.c +2 −1 Original line number Diff line number Diff line Loading @@ -565,7 +565,6 @@ __cpu_util_freq_walt(int cpu, struct sched_walt_cpu_load *walt_load) rq->old_estimated_time = pl; nl = div64_u64(nl * (100 + boost), walt_cpu_util_freq_divisor); pl = div64_u64(pl * (100 + boost), 100); walt_load->prev_window_util = util; walt_load->nl = nl; Loading Loading @@ -989,6 +988,8 @@ void set_window_start(struct rq *rq) unsigned int max_possible_efficiency = 1; unsigned int min_possible_efficiency = UINT_MAX; unsigned int sysctl_sched_conservative_pl; #define INC_STEP 8 #define DEC_STEP 2 #define CONSISTENT_THRES 16 Loading kernel/sysctl.c +9 −0 Original line number Diff line number Diff line Loading @@ -389,6 +389,15 @@ static struct ctl_table kern_table[] = { .extra1 = &neg_three, .extra2 = &three, }, { .procname = "sched_conservative_pl", .data = &sysctl_sched_conservative_pl, .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = &zero, .extra2 = &one, }, { .procname = "sched_walt_rotate_big_tasks", .data = &sysctl_sched_walt_rotate_big_tasks, Loading Loading
include/linux/sched/sysctl.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ extern unsigned int sysctl_sched_cpu_high_irqload; extern unsigned int sysctl_sched_boost; extern unsigned int sysctl_sched_group_upmigrate_pct; extern unsigned int sysctl_sched_group_downmigrate_pct; extern unsigned int sysctl_sched_conservative_pl; extern unsigned int sysctl_sched_walt_rotate_big_tasks; extern unsigned int sysctl_sched_min_task_util_for_boost; extern unsigned int sysctl_sched_min_task_util_for_colocation; Loading
kernel/sched/cpufreq_schedutil.c +15 −2 Original line number Diff line number Diff line Loading @@ -139,6 +139,15 @@ static inline bool use_pelt(void) #endif } static inline bool conservative_pl(void) { #ifdef CONFIG_SCHED_WALT return sysctl_sched_conservative_pl; #else return false; #endif } static bool sugov_up_down_rate_limit(struct sugov_policy *sg_policy, u64 time, unsigned int next_freq) { Loading Loading @@ -571,6 +580,7 @@ static void sugov_walt_adjust(struct sugov_cpu *sg_cpu, unsigned long *util, unsigned long nl = sg_cpu->walt_load.nl; unsigned long cpu_util = sg_cpu->util; bool is_hiload; unsigned long pl = sg_cpu->walt_load.pl; if (use_pelt()) return; Loading @@ -588,8 +598,11 @@ static void sugov_walt_adjust(struct sugov_cpu *sg_cpu, unsigned long *util, if (is_hiload && nl >= mult_frac(cpu_util, NL_RATIO, 100)) *util = *max; if (sg_policy->tunables->pl) *util = max(*util, sg_cpu->walt_load.pl); if (sg_policy->tunables->pl) { if (conservative_pl()) pl = mult_frac(pl, TARGET_LOAD, 100); *util = max(*util, pl); } } /* Loading
kernel/sched/walt.c +2 −1 Original line number Diff line number Diff line Loading @@ -565,7 +565,6 @@ __cpu_util_freq_walt(int cpu, struct sched_walt_cpu_load *walt_load) rq->old_estimated_time = pl; nl = div64_u64(nl * (100 + boost), walt_cpu_util_freq_divisor); pl = div64_u64(pl * (100 + boost), 100); walt_load->prev_window_util = util; walt_load->nl = nl; Loading Loading @@ -989,6 +988,8 @@ void set_window_start(struct rq *rq) unsigned int max_possible_efficiency = 1; unsigned int min_possible_efficiency = UINT_MAX; unsigned int sysctl_sched_conservative_pl; #define INC_STEP 8 #define DEC_STEP 2 #define CONSISTENT_THRES 16 Loading
kernel/sysctl.c +9 −0 Original line number Diff line number Diff line Loading @@ -389,6 +389,15 @@ static struct ctl_table kern_table[] = { .extra1 = &neg_three, .extra2 = &three, }, { .procname = "sched_conservative_pl", .data = &sysctl_sched_conservative_pl, .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = &zero, .extra2 = &one, }, { .procname = "sched_walt_rotate_big_tasks", .data = &sysctl_sched_walt_rotate_big_tasks, Loading