From: Michael Turquette <mturquette@baylibre.com>
To: Dietmar Eggemann <dietmar.eggemann@arm.com>,
peterz@infradead.org, rjw@rjwysocki.net
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
Juri.Lelli@arm.com, steve.muckle@linaro.org,
morten.rasmussen@arm.com, vincent.guittot@linaro.org,
Michael Turquette <mturquette+renesas@baylibre.com>
Subject: Re: [PATCH 7/8] cpufreq: Frequency invariant scheduler load-tracking support
Date: Tue, 15 Mar 2016 13:19:17 -0700 [thread overview]
Message-ID: <20160315201917.30639.2415@quark.deferred.io> (raw)
In-Reply-To: <56E85EEA.5000604@arm.com>
Quoting Dietmar Eggemann (2016-03-15 12:13:46)
> Hi Mike,
>
> On 14/03/16 05:22, Michael Turquette wrote:
> > From: Dietmar Eggemann <dietmar.eggemann@arm.com>
> >
> > Implements cpufreq_scale_freq_capacity() to provide the scheduler with a
> > frequency scaling correction factor for more accurate load-tracking.
> >
> > The factor is:
> >
> > current_freq(cpu) << SCHED_CAPACITY_SHIFT / max_freq(cpu)
> >
> > In fact, freq_scale should be a struct cpufreq_policy data member. But
> > this would require that the scheduler hot path (__update_load_avg()) would
> > have to grab the cpufreq lock. This can be avoided by using per-cpu data
> > initialized to SCHED_CAPACITY_SCALE for freq_scale.
> >
> > Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
> > Signed-off-by: Michael Turquette <mturquette+renesas@baylibre.com>
> > ---
> > I'm not as sure about patches 7 & 8, but I included them since I needed
> > frequency invariance while testing.
> >
> > As mentioned by myself in 2014 and Rafael last month, the
> > arch_scale_freq_capacity hook is awkward, because this behavior may vary
> > within an architecture.
> >
> > I re-introduce Dietmar's generic cpufreq implementation of the frequency
> > invariance hook in this patch, and change the preprocessor magic in
> > sched.h to favor the cpufreq implementation over arch- or
> > platform-specific ones in the next patch.
>
> Maybe it is worth mentioning that this patch is from EAS RFC5.2
> (linux-arm.org/linux-power.git energy_model_rfc_v5.2) which hasn't been
> posted to LKML. The last EAS RFCv5 has the Frequency Invariant Engine
> (FEI) based on the cpufreq notifier calls (cpufreq_callback,
> cpufreq_policy_callback) in the ARM arch code.
Oops, my apologies. I got a little mixed up while developing these
patches and I should have at least asked you about this one before
posting.
I'm really quite happy to drop #7 and #8 if they are too contentious or
if patch #7 is deemed as not-ready by you.
>
> > If run-time selection of ops is needed them someone will need to write
> > that code.
>
> Right now I see 3 different implementations of the FEI. 1) The X86
> aperf/mperf based one (https://lkml.org/lkml/2016/3/3/589), 2) This one
> in cpufreq.c and 3) the one based on cpufreq notifiers in ARCH (ARM,
> ARM64) code.
>
> I guess with sched_util we do need a solution for all platforms
> (different archs, x86 w/ and w/o X86_FEATURE_APERFMPERF, ...).
>
> > I think that this negates the need for the arm arch hooks[0-2], and
> > hopefully Morten and Dietmar can weigh in on this.
>
> It's true that we tried to get rid of the usage of the cpufreq callbacks
> (cpufreq_callback, cpufreq_policy_callback) with this patch. Plus we
> didn't want to implement it twice (for ARM and ARM64).
>
> But 2) would have to work for other ARCHs as well. Maybe as a fall-back
> for X86 w/o X86_FEATURE_APERFMPERF feature?
That's what I had in mind. I guess that some day there will be a need to
select implementations at run-time for both cpufreq (e.g. different
cpufreq drivers might implement arch_scale_freq_capacity) and for the
!CONFIG_CPU_FREQ case (e.g. different platforms might implement
arch_scale_freq_capcity within the same arch).
The cpufreq approach seems the most generic, hence patch #8 to make it
the default.
Regards,
Mike
>
> [...]
next prev parent reply other threads:[~2016-03-15 20:19 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-14 5:22 [PATCH 0/8] schedutil enhancements Michael Turquette
2016-03-14 5:22 ` [PATCH 1/8] sched/cpufreq: remove cpufreq_trigger_update() Michael Turquette
2016-03-15 21:14 ` Peter Zijlstra
[not found] ` <20160315214545.30639.98727@quark.deferred.io>
2016-03-15 21:49 ` Peter Zijlstra
2016-03-16 8:00 ` Peter Zijlstra
2016-03-14 5:22 ` [PATCH 2/8] sched/fair: add margin to utilization update Michael Turquette
2016-03-15 21:16 ` Peter Zijlstra
[not found] ` <20160315212848.30639.38747@quark.deferred.io>
2016-03-15 21:43 ` Peter Zijlstra
2016-03-16 2:52 ` Steve Muckle
2016-03-16 22:12 ` Michael Turquette
2016-03-14 5:22 ` [PATCH 3/8] sched/cpufreq: new cfs capacity margin helpers Michael Turquette
2016-03-15 21:17 ` Peter Zijlstra
2016-03-14 5:22 ` [PATCH 4/8] cpufreq/schedutil: sysfs capacity margin tunable Michael Turquette
2016-03-15 21:20 ` Peter Zijlstra
[not found] ` <20160315214043.30639.75507@quark.deferred.io>
2016-03-15 21:48 ` Peter Zijlstra
[not found] ` <20160315223701.30639.43127@quark.deferred.io>
2016-03-16 3:36 ` Steve Muckle
2016-03-16 8:05 ` Peter Zijlstra
2016-03-16 10:02 ` Juri Lelli
2016-03-16 17:55 ` Steve Muckle
2016-03-16 22:05 ` Michael Turquette
2016-03-17 9:40 ` Juri Lelli
2016-03-17 13:55 ` Steve Muckle
2016-03-17 15:53 ` Patrick Bellasi
2016-03-17 17:54 ` Juri Lelli
2016-03-17 18:56 ` Michael Turquette
2016-03-17 22:34 ` Rafael J. Wysocki
2016-03-16 12:45 ` Rafael J. Wysocki
2016-03-16 22:03 ` Michael Turquette
2016-03-14 5:22 ` [PATCH 5/8] sched/cpufreq: pass sched class into cpufreq_update_util Michael Turquette
2016-03-15 21:25 ` Peter Zijlstra
[not found] ` <20160315220609.30639.67271@quark.deferred.io>
2016-03-16 3:55 ` Steve Muckle
2016-03-16 7:41 ` Peter Zijlstra
2016-03-16 8:29 ` Vincent Guittot
2016-03-16 8:53 ` Peter Zijlstra
2016-03-16 9:16 ` Vincent Guittot
2016-03-16 12:39 ` Rafael J. Wysocki
2016-03-16 13:10 ` Peter Zijlstra
2016-03-16 13:23 ` Rafael J. Wysocki
2016-03-16 13:43 ` Peter Zijlstra
2016-03-14 5:22 ` [PATCH 6/8] cpufreq/schedutil: sum per-sched class utilization Michael Turquette
2016-03-15 21:29 ` Peter Zijlstra
[not found] ` <20160315220951.30639.12872@quark.deferred.io>
2016-03-16 7:38 ` Peter Zijlstra
2016-03-16 18:20 ` Steve Muckle
2016-03-16 18:36 ` Peter Zijlstra
2016-03-16 19:12 ` Steve Muckle
2016-03-14 5:22 ` [PATCH 7/8] cpufreq: Frequency invariant scheduler load-tracking support Michael Turquette
2016-03-15 19:13 ` Dietmar Eggemann
2016-03-15 20:19 ` Michael Turquette [this message]
2016-03-15 21:32 ` Peter Zijlstra
2016-03-16 18:33 ` Dietmar Eggemann
2016-03-15 21:34 ` Peter Zijlstra
2016-03-14 5:22 ` [PATCH 8/8] sched: prefer cpufreq_scale_freq_capacity Michael Turquette
2016-03-15 19:13 ` Dietmar Eggemann
2016-03-15 20:46 ` Michael Turquette
2016-03-16 19:44 ` Dietmar Eggemann
2016-03-16 20:07 ` Peter Zijlstra
2016-03-16 21:32 ` Rafael J. Wysocki
2016-03-15 21:37 ` Peter Zijlstra
[not found] ` <20160315222721.30639.28332@quark.deferred.io>
2016-03-16 7:47 ` Peter Zijlstra
2016-03-16 12:41 ` Peter Zijlstra
2016-03-16 0:08 ` [PATCH 0/8] schedutil enhancements Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160315201917.30639.2415@quark.deferred.io \
--to=mturquette@baylibre.com \
--cc=Juri.Lelli@arm.com \
--cc=dietmar.eggemann@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=morten.rasmussen@arm.com \
--cc=mturquette+renesas@baylibre.com \
--cc=peterz@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=steve.muckle@linaro.org \
--cc=vincent.guittot@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).