Merge "sched: walt: Improve the scheduler"

This commit is contained in:
qctecmdr 2020-05-27 18:54:59 -07:00 • committed by Gerrit - the friendly Code Review server
commit cdda674ede
3 changed files with 28 additions and 27 deletions

View file

@ -48,8 +48,9 @@ extern unsigned int __weak sysctl_sched_task_unfilter_period;
extern unsigned int __weak sysctl_sched_busy_hyst_enable_cpus;
extern unsigned int __weak sysctl_sched_busy_hyst;
extern unsigned int __weak sysctl_sched_coloc_busy_hyst_enable_cpus;
extern unsigned int __weak sysctl_sched_coloc_busy_hyst;
extern unsigned int __weak sysctl_sched_coloc_busy_hyst_cpu[NR_CPUS];
extern unsigned int __weak sysctl_sched_coloc_busy_hyst_max_ms;
extern unsigned int __weak sysctl_sched_coloc_busy_hyst_cpu_busy_pct[NR_CPUS];
extern unsigned int __weak sysctl_sched_window_stats_policy;
extern unsigned int __weak sysctl_sched_ravg_window_nr_ticks;
extern unsigned int __weak sysctl_sched_many_wakeup_threshold;
@ -77,6 +78,9 @@ sched_ravg_window_handler(struct ctl_table *table, int write,
extern int sched_boost_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos);
extern int sched_busy_hyst_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos);
#endif
#if defined(CONFIG_PREEMPTIRQ_EVENTS) || defined(CONFIG_PREEMPT_TRACER)

View file

@ -123,6 +123,12 @@ int __weak sched_boost_handler(struct ctl_table *table, int write,
return -ENOSYS;
}
int __weak sched_busy_hyst_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
{
return -ENOSYS;
}
u64 __weak sched_ktime_clock(void) { return 0; }
unsigned long __weak

View file

@ -64,7 +64,6 @@
#include <linux/binfmts.h>
#include <linux/sched/sysctl.h>
#include <linux/sched/coredump.h>
#include <linux/sched/stat.h>
#include <linux/kexec.h>
#include <linux/bpf.h>
#include <linux/mount.h>
@ -242,10 +241,6 @@ static int proc_dostring_coredump(struct ctl_table *table, int write,
#endif
static int proc_dopipe_max_size(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos);
#ifdef CONFIG_SCHED_WALT
static int proc_douintvec_minmax_schedhyst(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos);
#endif
#ifdef CONFIG_MAGIC_SYSRQ
/* Note: sysrq code uses its own private copy */
@ -513,7 +508,7 @@ static struct ctl_table kern_table[] = {
.data = &sysctl_sched_busy_hyst_enable_cpus,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_douintvec_minmax_schedhyst,
.proc_handler = sched_busy_hyst_handler,
.extra1 = SYSCTL_ZERO,
.extra2 = &two_hundred_fifty_five,
},
@ -522,7 +517,7 @@ static struct ctl_table kern_table[] = {
.data = &sysctl_sched_busy_hyst,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_douintvec_minmax_schedhyst,
.proc_handler = sched_busy_hyst_handler,
.extra1 = SYSCTL_ZERO,
.extra2 = &ns_per_sec,
},
@ -531,16 +526,16 @@ static struct ctl_table kern_table[] = {
.data = &sysctl_sched_coloc_busy_hyst_enable_cpus,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_douintvec_minmax_schedhyst,
.proc_handler = sched_busy_hyst_handler,
.extra1 = SYSCTL_ZERO,
.extra2 = &two_hundred_fifty_five,
},
{
.procname = "sched_coloc_busy_hyst_ns",
.data = &sysctl_sched_coloc_busy_hyst,
.maxlen = sizeof(unsigned int),
.procname = "sched_coloc_busy_hyst_cpu_ns",
.data = &sysctl_sched_coloc_busy_hyst_cpu,
.maxlen = sizeof(unsigned int) * NR_CPUS,
.mode = 0644,
.proc_handler = proc_douintvec_minmax_schedhyst,
.proc_handler = sched_busy_hyst_handler,
.extra1 = SYSCTL_ZERO,
.extra2 = &ns_per_sec,
},
@ -549,10 +544,19 @@ static struct ctl_table kern_table[] = {
.data = &sysctl_sched_coloc_busy_hyst_max_ms,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_douintvec_minmax_schedhyst,
.proc_handler = sched_busy_hyst_handler,
.extra1 = SYSCTL_ZERO,
.extra2 = &one_hundred_thousand,
},
{
.procname = "sched_coloc_busy_hyst_cpu_busy_pct",
.data = &sysctl_sched_coloc_busy_hyst_cpu_busy_pct,
.maxlen = sizeof(unsigned int) * NR_CPUS,
.mode = 0644,
.proc_handler = sched_busy_hyst_handler,
.extra1 = SYSCTL_ZERO,
.extra2 = &one_hundred,
},
{
.procname = "sched_ravg_window_nr_ticks",
.data = &sysctl_sched_ravg_window_nr_ticks,
@ -3165,19 +3169,6 @@ static int proc_dostring_coredump(struct ctl_table *table, int write,
}
#endif
#ifdef CONFIG_SCHED_WALT
static int proc_douintvec_minmax_schedhyst(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
{
int ret = proc_douintvec_minmax(table, write, buffer, lenp, ppos);
if (!ret && write)
sched_update_hyst_times();
return ret;
}
#endif
static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write,
void __user *buffer,
size_t *lenp, loff_t *ppos,