From f1627cb4d62670f3a53cae4e925f2dae5e8a8550 Mon Sep 17 00:00:00 2001 From: Biao Long Date: Wed, 2 Sep 2020 16:52:05 +0800 Subject: [PATCH] sched/fair: Improve the scheduler This change is for general scheduler improvements. Change-Id: I917955ef029f30db6c185a41f717a89dd179cc49 Signed-off-by: Biao Long --- include/linux/sched/sysctl.h | 1 + kernel/sched/fair.c | 2 ++ kernel/sysctl.c | 9 +++++++++ 3 files changed, 12 insertions(+) diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h index 2063a6f5cd96..32d9ed08d2e9 100644 --- a/include/linux/sched/sysctl.h +++ b/include/linux/sched/sysctl.h @@ -29,6 +29,7 @@ extern unsigned int sysctl_sched_latency; extern unsigned int sysctl_sched_min_granularity; extern unsigned int sysctl_sched_wakeup_granularity; extern unsigned int sysctl_sched_child_runs_first; +extern unsigned int sysctl_sched_force_lb_enable; #ifdef CONFIG_SCHED_WALT extern unsigned int __weak sysctl_sched_capacity_margin_up[MAX_MARGIN_LEVELS]; extern unsigned int __weak sysctl_sched_capacity_margin_down[MAX_MARGIN_LEVELS]; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 248339578c16..5e8d430ae2a8 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -138,6 +138,7 @@ unsigned int sysctl_walt_rtg_cfs_boost_prio = 99; /* disabled by default */ unsigned int sysctl_walt_low_latency_task_boost; /* disabled by default */ #endif unsigned int sched_small_task_threshold = 102; +__read_mostly unsigned int sysctl_sched_force_lb_enable = 1; static inline void update_load_add(struct load_weight *lw, unsigned long inc) { @@ -11358,6 +11359,7 @@ int newidle_balance(struct rq *this_rq, struct rq_flags *rf) bool prefer_spread = prefer_spread_on_idle(this_cpu, true); bool force_lb = (!is_min_capacity_cpu(this_cpu) && silver_has_big_tasks() && + sysctl_sched_force_lb_enable && (atomic_read(&this_rq->nr_iowait) == 0)); diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 16b5ae77fba7..97a2617a7b9f 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -573,6 +573,15 @@ static struct ctl_table kern_table[] = { .extra2 = SYSCTL_ONE, }, #endif + { + .procname = "sched_force_lb_enable", + .data = &sysctl_sched_force_lb_enable, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ZERO, + .extra2 = SYSCTL_ONE, + }, #ifdef CONFIG_SCHED_DEBUG { .procname = "sched_min_granularity_ns",