Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c50cc229 authored by Todd Kjos's avatar Todd Kjos Committed by John Stultz
Browse files

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: default avatar"Todd Kjos <tkjos@google.com&gt;">
parent 4a5e890e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,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 {
+4 −1
Original line number Diff line number Diff line
@@ -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;

/*
@@ -687,7 +688,9 @@ void init_entity_runnable_average(struct sched_entity *se)
	sa->period_contrib = 1023;
	sa->load_avg = scale_load_down(se->load.weight);
	sa->load_sum = sa->load_avg * LOAD_AVG_MAX;
	sa->util_avg = scale_load_down(SCHED_LOAD_SCALE);
	sa->util_avg =  sched_freq() ?
		sysctl_sched_initial_task_util :
		scale_load_down(SCHED_LOAD_SCALE);
	sa->util_sum = sa->util_avg * LOAD_AVG_MAX;
	/* when this task enqueue'ed, it will contribute to its cfs_rq's load_avg */
}
+7 −0
Original line number Diff line number Diff line
@@ -317,6 +317,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,