ANDROID: sched/fair: add tunable to set initial task load
The choice of initial task load upon fork has a large influence on CPU and OPP selection when scheduler-driven DVFS is in use. Make this tuneable by adding a new sysctl "sched_initial_task_util". If the sched governor is not used, the default remains at SCHED_LOAD_SCALE Otherwise, the value from the sysctl is used. This defaults to 0. Signed-off-by: "Todd Kjos <tkjos@google.com>" Signed-off-by: Andres Oportus <andresoportus@google.com>
This commit is contained in:
parent
1931b93dba
commit
c6a6f3bfa0
3 changed files with 13 additions and 1 deletions
|
@ -20,6 +20,7 @@ extern unsigned int sysctl_sched_wakeup_granularity;
|
|||
extern unsigned int sysctl_sched_child_runs_first;
|
||||
extern unsigned int sysctl_sched_is_big_little;
|
||||
extern unsigned int sysctl_sched_sync_hint_enable;
|
||||
extern unsigned int sysctl_sched_initial_task_util;
|
||||
extern unsigned int sysctl_sched_cstate_aware;
|
||||
|
||||
enum sched_tunable_scaling {
|
||||
|
|
|
@ -53,6 +53,7 @@ unsigned int normalized_sysctl_sched_latency = 6000000ULL;
|
|||
|
||||
unsigned int sysctl_sched_is_big_little = 0;
|
||||
unsigned int sysctl_sched_sync_hint_enable = 1;
|
||||
unsigned int sysctl_sched_initial_task_util = 0;
|
||||
unsigned int sysctl_sched_cstate_aware = 1;
|
||||
|
||||
/*
|
||||
|
@ -704,10 +705,13 @@ void init_entity_runnable_average(struct sched_entity *se)
|
|||
if (entity_is_task(se))
|
||||
sa->load_avg = scale_load_down(se->load.weight);
|
||||
sa->load_sum = sa->load_avg * LOAD_AVG_MAX;
|
||||
|
||||
/*
|
||||
* At this point, util_avg won't be used in select_task_rq_fair anyway
|
||||
*/
|
||||
sa->util_avg = 0;
|
||||
sa->util_avg = sched_freq() ?
|
||||
sysctl_sched_initial_task_util :
|
||||
0;
|
||||
sa->util_sum = 0;
|
||||
/* when this task enqueue'ed, it will contribute to its cfs_rq's load_avg */
|
||||
}
|
||||
|
|
|
@ -321,6 +321,13 @@ static struct ctl_table kern_table[] = {
|
|||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.procname = "sched_initial_task_util",
|
||||
.data = &sysctl_sched_initial_task_util,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.procname = "sched_cstate_aware",
|
||||
.data = &sysctl_sched_cstate_aware,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue