From: Peter Zijlstra <peterz@infradead.org>
To: Douglas Raillard <douglas.raillard@arm.com>
Cc: linux-kernel@vger.kernel.org, rjw@rjwysocki.net,
viresh.kumar@linaro.org, juri.lelli@redhat.com,
vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
qperret@google.com, linux-pm@vger.kernel.org
Subject: Re: [RFC PATCH v4 0/6] sched/cpufreq: Make schedutil energy aware
Date: Fri, 14 Feb 2020 14:37:08 +0100 [thread overview]
Message-ID: <20200214133708.GM14879@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <4a664419-f5a6-882f-83ee-5bbf20ff33d3@arm.com>
On Thu, Feb 13, 2020 at 05:49:48PM +0000, Douglas Raillard wrote:
> > description of it all somewhere.
>
> Now a textual version of it:
>
> em_pd_get_higher_freq() does the following:
>
> # Turn the abstract cost margin on the EM_COST_MARGIN_SCALE into a
> # concrete value. cost_margin=EM_COST_MARGIN_SCALE will give a concrete
> # value of "max_cost", which is the highest OPP on that CPU.
> concrete_margin = (cost_margin * max_cost) / EM_COST_MARGIN_SCALE;
>
> # Then it finds the lowest OPP satisfying min_freq:
> min_opp = OPP_AT_FREQ(min_freq)
>
> # It takes the cost associated, and finds the highest OPP that has a
> # cost lower than that:
> max_cost = COST_OF(min_opp) + concrete_margin
>
> final_freq = MAX(
> FREQ_OF(opp)
> for opp in available_opps
> if COST_OF(opp) <= max_cost
> )
Right; I got that.
> So this means that:
> util - util_est_enqueued ~= 0
Only if you assume the task will get scheduled out reasonably frequent.
> => cost_margin ~= 0
> => concrete_cost_margin ~= 0
> => max_cost = COST_OF(min_opp) + 0
> => final_freq = FREQ_OF(min_opp)
>
> The effective boost is ~0, so you will get the current behaviour of
> schedutil.
But the argument holds; because if things don't get scheduled out, we'll
peg u = 1 and hit f = 1 and all is well anyway.
Which is a useful property; it shows that in the steady state, this
patch-set is a NOP, but the above argument only relies on 'util_avg >
util_est' being used a trigger.
> If the task starts needing more cycles than during its previous period,
> `util - util_est_enqueued` will grow like util since util_est_enqueued
> is constant. The longer we wait, the higher the boost, until the task
> goes to sleep again.
>
> At next wakeup, util_est_enqueued has caught up and either:
> 1) util becomes stable, so no more boosting
> 2) util keeps increasing, so go for another round of boosting
Agreed; however elsewhere you wrote:
> 1) If you care more about predictable battery life (or energy bill) than
> predictability of the boost feature, EM should be used.
>
> 2) If you don't have an EM or you care more about having a predictable
> boost for a given workload, use util (or disable that boost).
This is the part I'm still not sure about; how do the specifics of the
cost_margin setup lead to 1), or how would some frobbing with frequency
selection destroy that property.
next prev parent reply other threads:[~2020-02-14 13:37 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-22 17:35 Douglas RAILLARD
2020-01-22 17:35 ` [RFC PATCH v4 1/6] PM: Introduce em_pd_get_higher_freq() Douglas RAILLARD
2020-01-22 17:35 ` [RFC PATCH v4 2/6] sched/cpufreq: Attach perf domain to sugov policy Douglas RAILLARD
2020-01-22 17:35 ` [RFC PATCH v4 3/6] sched/cpufreq: Hook em_pd_get_higher_power() into get_next_freq() Douglas RAILLARD
2020-01-23 16:16 ` Quentin Perret
2020-01-23 17:52 ` Douglas Raillard
2020-01-24 14:37 ` Quentin Perret
2020-01-24 14:58 ` Quentin Perret
2020-02-27 15:51 ` Douglas Raillard
2020-01-22 17:35 ` [RFC PATCH v4 4/6] sched/cpufreq: Introduce sugov_cpu_ramp_boost Douglas RAILLARD
2020-01-23 15:55 ` Rafael J. Wysocki
2020-01-23 17:21 ` Douglas Raillard
2020-01-23 21:02 ` Rafael J. Wysocki
2020-01-28 15:38 ` Douglas Raillard
2020-02-10 13:08 ` Peter Zijlstra
2020-02-13 10:49 ` Douglas Raillard
2020-01-22 17:35 ` [RFC PATCH v4 5/6] sched/cpufreq: Boost schedutil frequency ramp up Douglas RAILLARD
2020-01-22 17:35 ` [RFC PATCH v4 6/6] sched/cpufreq: Add schedutil_em_tp tracepoint Douglas RAILLARD
2020-01-22 18:14 ` [RFC PATCH v4 0/6] sched/cpufreq: Make schedutil energy aware Douglas Raillard
2020-02-10 13:21 ` Peter Zijlstra
2020-02-13 17:49 ` Douglas Raillard
2020-02-14 12:21 ` Peter Zijlstra
2020-02-14 12:52 ` Peter Zijlstra
2020-03-11 12:25 ` Douglas Raillard
2020-02-14 13:37 ` Peter Zijlstra [this message]
2020-03-11 12:40 ` Douglas Raillard
2020-01-23 15:43 ` Rafael J. Wysocki
2020-01-23 17:16 ` Douglas Raillard
2020-02-10 13:30 ` Peter Zijlstra
2020-02-13 11:55 ` Douglas Raillard
2020-02-13 13:20 ` Peter Zijlstra
2020-02-27 15:50 ` Douglas Raillard
2020-01-27 17:16 ` Vincent Guittot
2020-02-10 11:37 ` Douglas Raillard
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=20200214133708.GM14879@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=dietmar.eggemann@arm.com \
--cc=douglas.raillard@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=qperret@google.com \
--cc=rjw@rjwysocki.net \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@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
all inboxes | Powered by JetHome®