On 28-02-18, 12:22, Rafael J. Wysocki wrote:
> On Wed, Feb 28, 2018 at 12:06 PM, Claudio Scordino
> <clau...@evidence.eu.com> wrote:
> > When the SCHED_DEADLINE scheduling class increases the CPU utilization,
> > we should not wait for the rate limit, otherwise we may miss some
> > deadline.
> >
> > Tests using rt-app on Exynos5422 with up to 10 SCHED_DEADLINE tasks have
> > shown reductions of even 10% of deadline misses with a negligible
> > increase of energy consumption (measured through Baylibre Cape).
> >
> > Signed-off-by: Claudio Scordino <clau...@evidence.eu.com>
> > CC: Ingo Molnar <mi...@redhat.com>
> > CC: Patrick Bellasi <patrick.bell...@arm.com>
> > CC: Dietmar Eggemann <dietmar.eggem...@arm.com>
> > CC: Morten Rasmussen <morten.rasmus...@arm.com>
> > CC: Juri Lelli <juri.le...@redhat.com>
> > CC: Viresh Kumar <viresh.ku...@linaro.org>
> > CC: Vincent Guittot <vincent.guit...@linaro.org>
> > CC: Todd Kjos <tk...@android.com>
> > CC: Joel Fernandes <joe...@google.com>
> > CC: linux...@vger.kernel.org
> > CC: linux-kernel@vger.kernel.org
> > ---
> > Changes from v1:
> >  - Logic moved from sugov_should_update_freq() to
> >    sugov_update_single()/_shared() to not duplicate data structures
> >  - Rate limit not ignored in case of "fast switch"
> 
> I'm not sure about this last bit.
> 
> IMO you can set sg_policy->need_freq_update even in the "fast switch"
> case to start with and special case it in the future if that turns out
> to be problematic.  That is, unless you have data indicating that it
> already is problematic, of course. :-)
> 
> > ---
> >  kernel/sched/cpufreq_schedutil.c | 16 ++++++++++++++++
> >  1 file changed, 16 insertions(+)
> >
> > diff --git a/kernel/sched/cpufreq_schedutil.c 
> > b/kernel/sched/cpufreq_schedutil.c
> > index 7936f54..ca6ce72 100644
> > --- a/kernel/sched/cpufreq_schedutil.c
> > +++ b/kernel/sched/cpufreq_schedutil.c
> > @@ -273,6 +273,14 @@ static void sugov_update_single(struct 
> > update_util_data *hook, u64 time,
> >         sugov_set_iowait_boost(sg_cpu, time);
> >         sg_cpu->last_update = time;
> >
> > +       /*
> > +        * Make sugov_should_update_freq() ignore the rate limit when DL
> > +        * has increased the utilization.
> > +        */
> > +       if ((cpu_util_dl(cpu_rq(sg_cpu->cpu)) > sg_cpu->util_dl) &&
> > +                       !(sg_policy->policy->fast_switch_enabled))
> > +               sg_policy->need_freq_update = true;
> > +

And a new routine for this block would be good as well.

-- 
viresh

Reply via email to