sched/walt: Improve the scheduler

This change is for general scheduler improvement.

Change-Id: I7e2f06b0f93d6c3c2cc439f895083f4b7cb96212
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
This commit is contained in:
Abhijeet Dharmapurikar 2021-09-14 01:15:03 -07:00 committed by Rishabh Bhatnagar
parent 60e7fe8dba
commit 4a2c606e12
3 changed files with 18 additions and 0 deletions

View File

@ -64,6 +64,7 @@ unsigned int sysctl_sched_sync_hint_enable = 1;
unsigned int sysctl_sched_bug_on_rt_throttle;
unsigned int sysctl_panic_on_walt_bug;
unsigned int sysctl_sched_suppress_region2;
unsigned int sysctl_sched_skip_sp_newly_idle_lb;
/* range is [1 .. INT_MAX] */
static int sysctl_task_read_pid = 1;
@ -732,6 +733,15 @@ struct ctl_table walt_table[] = {
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "sched_skip_sp_newly_idle_lb",
.data = &sysctl_sched_skip_sp_newly_idle_lb,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "panic_on_walt_bug",
.data = &sysctl_panic_on_walt_bug,

View File

@ -288,6 +288,7 @@ extern unsigned int sysctl_walt_low_latency_task_threshold; /* disabled by defau
extern unsigned int sysctl_sched_sync_hint_enable;
extern unsigned int sysctl_sched_bug_on_rt_throttle;
extern unsigned int sysctl_sched_suppress_region2;
extern unsigned int sysctl_sched_skip_sp_newly_idle_lb;
extern struct ctl_table walt_table[];
extern struct ctl_table walt_base_table[];
extern void walt_tunables(void);

View File

@ -690,6 +690,13 @@ static void walt_newidle_balance(void *unused, struct rq *this_rq,
busy_cpu = walt_lb_find_busiest_cpu(this_cpu,
&cpu_array[order_index][cluster]);
if (sysctl_sched_skip_sp_newly_idle_lb) {
if (busy_cpu == -1 &&
((order_index == 0 && cluster > 0) ||
(order_index == 2 && cluster > 0 && !help_min_cap)))
break;
}
/* we got the busy/src cpu here. */
if (busy_cpu != -1 || this_rq->nr_running > 0)
break;