Messages in this thread | | | From | "Rafael J. Wysocki" <> | Date | Thu, 23 Jan 2020 22:02:26 +0100 | Subject | Re: [RFC PATCH v4 4/6] sched/cpufreq: Introduce sugov_cpu_ramp_boost |
| |
On Thu, Jan 23, 2020 at 6:21 PM Douglas Raillard <douglas.raillard@arm.com> wrote: > > > > On 1/23/20 3:55 PM, Rafael J. Wysocki wrote: > > On Wed, Jan 22, 2020 at 6:36 PM Douglas RAILLARD > > <douglas.raillard@arm.com> wrote: > >> > >> Use the utilization signals dynamic to detect when the utilization of a > >> set of tasks starts increasing because of a change in tasks' behavior. > >> This allows detecting when spending extra power for faster frequency > >> ramp up response would be beneficial to the reactivity of the system. > >> > >> This ramp boost is computed as the difference between util_avg and > >> util_est_enqueued. This number somehow represents a lower bound of how > >> much extra utilization this tasks is actually using, compared to our > >> best current stable knowledge of it (which is util_est_enqueued). > >> > >> When the set of runnable tasks changes, the boost is disabled as the > >> impact of blocked utilization on util_avg will make the delta with > >> util_est_enqueued not very informative. > >> > >> Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com> > >> --- > >> kernel/sched/cpufreq_schedutil.c | 43 ++++++++++++++++++++++++++++++++ > >> 1 file changed, 43 insertions(+) > >> > >> diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c > >> index 608963da4916..25a410a1ff6a 100644 > >> --- a/kernel/sched/cpufreq_schedutil.c > >> +++ b/kernel/sched/cpufreq_schedutil.c > >> @@ -61,6 +61,10 @@ struct sugov_cpu { > >> unsigned long bw_dl; > >> unsigned long max; > >> > >> + unsigned long ramp_boost; > >> + unsigned long util_est_enqueued; > >> + unsigned long util_avg; > >> + > >> /* The field below is for single-CPU policies only: */ > >> #ifdef CONFIG_NO_HZ_COMMON > >> unsigned long saved_idle_calls; > >> @@ -183,6 +187,42 @@ static void sugov_deferred_update(struct sugov_policy *sg_policy, u64 time, > >> } > >> } > >> > >> +static unsigned long sugov_cpu_ramp_boost(struct sugov_cpu *sg_cpu) > >> +{ > >> + return READ_ONCE(sg_cpu->ramp_boost); > >> +} > > > > Where exactly is this function used? > > In the next commit where the boost value is actually used to do > something. The function is introduced here to keep the > WRITE_ONCE/READ_ONCE pair together.
But ramp_boost itself is not really used in this patch too AFAICS.
| |