The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Patrick Bellasi <patrick.bellasi@arm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Juri Lelli <juri.lelli@redhat.com>,
	Quentin Perret <quentin.perret@arm.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	mingo@kernel.org, linux-kernel@vger.kernel.org,
	rjw@rjwysocki.net, dietmar.eggemann@arm.com,
	Morten.Rasmussen@arm.com, viresh.kumar@linaro.org,
	valentin.schneider@arm.com
Subject: Re: [PATCH v5 03/10] cpufreq/schedutil: add rt utilization tracking
Date: Fri, 1 Jun 2018 18:23:59 +0100	[thread overview]
Message-ID: <20180601172359.GN30654@e110439-lin> (raw)
In-Reply-To: <20180601162357.GT12180@hirez.programming.kicks-ass.net>

On 01-Jun 18:23, Peter Zijlstra wrote:
> On Thu, May 31, 2018 at 10:46:07AM +0200, Juri Lelli wrote:
> > On 30/05/18 17:46, Quentin Perret wrote:
> 
> > > So I understand why we want to got to max freq when a RT task is running,
> > > but I think there are use cases where we might want to be more conservative
> > > and use the util_avg of the RT rq instead. The first use case is
> > > battery-powered devices where going to max isn't really affordable from
> > > an energy standpoint. Android, for example, has been using a RT
> > > utilization signal to select OPPs for quite a while now, because going
> > > to max blindly is _very_ expensive.
> > > 
> > > And the second use-case is thermal pressure. On some modern CPUs, going to
> > > max freq can lead to stringent thermal capping very quickly, at the
> > > point where your CPUs might not have enough capacity to serve your tasks
> > > properly. And that can ultimately hurt the very RT tasks you originally
> > > tried to run fast. In these systems, in the long term, you'd be better off
> > > not asking for more than what you really need ...
> > 
> > Proposed the same at last LPC. Peter NAKed it (since RT is all about
> > meeting deadlines, and when using FIFO/RR we don't really know how fast
> > the CPU should go to meet them, so go to max is the only safe decision).
> > 
> > > So what about having a sched_feature to select between going to max and
> > > using the RT util_avg ? Obviously the default should keep the current
> > > behaviour.
> > 
> > Peter, would SCHED_FEAT make a difference? :)
> 
> Hurmph...
> 
> > Or Patrick's utilization capping applied to RT..
> 
> There might be something there, IIRC that tracks the max potential
> utilization for the running tasks. So at that point we can set a
> frequency to minimize idle time.

Or we can do the opposite: we go to max by default (as it is now) and
if you think that some RT tasks don't need the full speed, you can
apply a util_max to them.

That way, when a RT task is running alone on a CPU, we can run it
only at a custom max freq which is known to be ok according to your
latency requirements.

If instead it's running with other CFS tasks, we add already the CFS
utilization, which will result into a speedup of the RT task to give
back the CPU to CFS.

> It's not perfect, because while the clamping thing effectively sets a
> per-task bandwidth, the max filter is wrong. Also there's no CBS to
> enforce anything.

Right, well... from user-space potentially if you carefully set the RT
cpu's controller (both bandwidth and clamping) and keep track of the
allocated bandwidth, you can still ensure that all your RT tasks will
be able to run, according to their prio.

> With RT servers we could aggregate the group bandwidth and limit from
> that...

What we certainly miss I think it's the EDF scheduler: it's not
possible to run certain RT tasks before others irrespectively of they
relative priority.

-- 
#include <best/regards.h>

Patrick Bellasi

  reply	other threads:[~2018-06-01 17:24 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-25 13:12 [PATCH v5 00/10] track CPU utilization Vincent Guittot
2018-05-25 13:12 ` [PATCH v5 01/10] sched/pelt: Move pelt related code in a dedicated file Vincent Guittot
2018-05-25 14:26   ` Quentin Perret
2018-05-25 16:14     ` Peter Zijlstra
2018-05-29  8:21       ` Quentin Perret
2018-05-25 18:04     ` Patrick Bellasi
2018-05-29 14:55       ` Quentin Perret
2018-05-29 15:02         ` Vincent Guittot
2018-05-29 15:04           ` Quentin Perret
2018-05-25 13:12 ` [PATCH v5 02/10] sched/rt: add rt_rq utilization tracking Vincent Guittot
2018-05-25 15:54   ` Patrick Bellasi
2018-05-29 13:29     ` Vincent Guittot
2018-05-30  9:32       ` Patrick Bellasi
2018-05-30 10:06         ` Vincent Guittot
2018-05-30 11:01           ` Patrick Bellasi
2018-05-30 14:39             ` Vincent Guittot
2018-05-25 13:12 ` [PATCH v5 03/10] cpufreq/schedutil: add rt " Vincent Guittot
2018-05-30  7:03   ` Viresh Kumar
2018-05-30  8:23     ` Vincent Guittot
2018-05-30  9:40   ` Patrick Bellasi
2018-05-30  9:53     ` Vincent Guittot
2018-05-30 16:46   ` Quentin Perret
2018-05-31  8:46     ` Juri Lelli
2018-06-01 16:23       ` Peter Zijlstra
2018-06-01 17:23         ` Patrick Bellasi [this message]
2018-06-04 10:17           ` Quentin Perret
2018-06-04 15:16             ` Patrick Bellasi
2018-05-25 13:12 ` [PATCH v5 04/10] sched/dl: add dl_rq " Vincent Guittot
2018-05-30 10:50   ` Patrick Bellasi
2018-05-30 11:51     ` Vincent Guittot
2018-05-25 13:12 ` [PATCH v5 05/10] cpufreq/schedutil: get max utilization Vincent Guittot
2018-05-28 10:12   ` Juri Lelli
2018-05-28 14:57     ` Vincent Guittot
2018-05-28 15:22       ` Juri Lelli
2018-05-28 16:34         ` Vincent Guittot
2018-05-31 10:27           ` Patrick Bellasi
2018-05-31 13:02             ` Vincent Guittot
2018-06-01 13:53               ` Vincent Guittot
2018-06-01 17:45                 ` Joel Fernandes
2018-06-04  6:41                   ` Vincent Guittot
2018-06-04  7:04                     ` Juri Lelli
2018-06-04  7:14                       ` Vincent Guittot
2018-06-04 10:12                         ` Juri Lelli
2018-06-04 12:35                           ` Vincent Guittot
2018-05-29  5:08     ` Joel Fernandes
2018-05-29  6:31       ` Juri Lelli
2018-05-29  6:48         ` Vincent Guittot
2018-05-29  9:47           ` Juri Lelli
2018-05-29  8:40   ` Quentin Perret
2018-05-29  9:52     ` Juri Lelli
2018-05-30  8:37       ` Quentin Perret
2018-05-30  8:51         ` Juri Lelli
2018-05-25 13:12 ` [PATCH v5 06/10] sched: remove rt and dl from sched_avg Vincent Guittot
2018-05-25 13:12 ` [PATCH v5 07/10] sched/irq: add irq utilization tracking Vincent Guittot
2018-05-30 15:55   ` Dietmar Eggemann
2018-05-30 18:45     ` Vincent Guittot
2018-05-31 16:54       ` Dietmar Eggemann
2018-06-06 16:06         ` Vincent Guittot
2018-06-07  8:29           ` Dietmar Eggemann
2018-06-07  8:44             ` Vincent Guittot
2018-06-07  9:06               ` Dietmar Eggemann
2018-05-25 13:12 ` [PATCH v5 08/10] cpufreq/schedutil: take into account interrupt Vincent Guittot
2018-05-28 10:41   ` Juri Lelli
2018-05-28 12:06     ` Vincent Guittot
2018-05-28 12:37       ` Juri Lelli
2018-05-25 13:12 ` [PATCH v5 09/10] sched: remove rt_avg code Vincent Guittot
2018-05-25 13:12 ` [PATCH v5 10/10] proc/sched: remove unused sched_time_avg_ms Vincent Guittot
2018-06-04 16:50 ` [PATCH v5 00/10] track CPU utilization Peter Zijlstra
2018-06-04 17:13   ` Quentin Perret
2018-06-04 18:08   ` Vincent Guittot
2018-06-05 14:18     ` Peter Zijlstra
2018-06-05 15:03       ` Juri Lelli
2018-06-05 15:38       ` Patrick Bellasi
2018-06-05 22:27         ` Peter Zijlstra
2018-06-06  9:44       ` Quentin Perret
2018-06-06  9:59         ` Vincent Guittot
2018-06-06 10:02           ` Vincent Guittot
2018-06-06 10:12           ` Quentin Perret
2018-06-05  8:36 ` Vincent Guittot
2018-06-05 10:57   ` Quentin Perret
2018-06-05 11:59     ` Vincent Guittot
2018-06-05 13:12       ` Quentin Perret
2018-06-05 13:18         ` Vincent Guittot
2018-06-05 13:52           ` Quentin Perret
2018-06-05 13:55             ` Vincent Guittot
2018-06-05 14:09               ` Quentin Perret
2018-06-05 14:21                 ` Quentin Perret
2018-06-05 12:11     ` Juri Lelli
2018-06-05 13:05       ` Quentin Perret
2018-06-05 13:15         ` Juri Lelli
2018-06-05 14:01           ` Quentin Perret
2018-06-05 14:13             ` Juri Lelli
2018-06-06 13:05               ` Claudio Scordino
2018-06-06 13:20                 ` Quentin Perret
2018-06-06 13:53                   ` Claudio Scordino
2018-06-06 14:10                     ` Quentin Perret
2018-06-06 21:05                   ` luca abeni
2018-06-07  8:25                     ` Quentin Perret
2018-06-06 20:53                 ` luca abeni

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=20180601172359.GN30654@e110439-lin \
    --to=patrick.bellasi@arm.com \
    --cc=Morten.Rasmussen@arm.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=quentin.perret@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=valentin.schneider@arm.com \
    --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