From ec7d8cc0766bb640f6bb12f7c7fc4f5b65d9a272 Mon Sep 17 00:00:00 2001 From: Steve Muckle Date: Thu, 12 Jun 2014 10:44:46 -0700 Subject: [PATCH] sched: add power aware scheduling sysctl The sched_enable_power_aware sysctl will control whether or not scheduling decisions are influenced by the power consumption of individual CPUs. Change-Id: I312f892cf76a3fccc4ecc8aa6703908b205267f0 Signed-off-by: Steve Muckle Signed-off-by: Srivatsa Vaddagiri --- include/linux/sched/sysctl.h | 1 + kernel/sched/fair.c | 8 ++++++++ kernel/sysctl.c | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h index 82b43870c427..66a978ca7a65 100644 --- a/include/linux/sched/sysctl.h +++ b/include/linux/sched/sysctl.h @@ -55,6 +55,7 @@ extern unsigned int sysctl_sched_small_task_pct; extern unsigned int sysctl_sched_upmigrate_pct; extern unsigned int sysctl_sched_downmigrate_pct; extern int sysctl_sched_upmigrate_min_nice; +extern unsigned int sysctl_sched_enable_power_aware; #else /* CONFIG_SCHED_HMP */ diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index fdf879b9e51c..28151d829d30 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -2574,6 +2574,12 @@ unsigned int __read_mostly sysctl_sched_enable_hmp_task_placement = 1; */ unsigned int __read_mostly sysctl_sched_mostly_idle_nr_run = 3; +/* + * Control whether or not individual CPU power consumption is used to + * guide task placement. + */ +unsigned int __read_mostly sysctl_sched_enable_power_aware = 1; + /* * Conversion of *_pct to absolute form is based on max_task_load(). * @@ -2980,6 +2986,8 @@ static inline int nr_big_tasks(struct rq *rq) #else /* CONFIG_SCHED_HMP */ +#define sysctl_sched_enable_power_aware 0 + static inline int select_best_cpu(struct task_struct *p, int target) { return 0; diff --git a/kernel/sysctl.c b/kernel/sysctl.c index edf9fa68004b..06fe2f6591e7 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -365,6 +365,13 @@ static struct ctl_table kern_table[] = { .mode = 0644, .proc_handler = sched_hmp_proc_update_handler, }, + { + .procname = "sched_enable_power_aware", + .data = &sysctl_sched_enable_power_aware, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec, + }, #endif /* CONFIG_SCHED_HMP */ #ifdef CONFIG_SCHED_DEBUG {