mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Morten Rasmussen <morten.rasmussen@arm.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Amit Kucheria <amit.kucheria@linaro.org>,
	Ingo Molnar <mingo@elte.hu>,
	Lists linaro-kernel <linaro-kernel@lists.linaro.org>,
	Linux PM list <linux-pm@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/3] sched: idle: Add sched balance option
Date: Wed, 30 Apr 2014 00:19:53 +0200	[thread overview]
Message-ID: <2877197.W88Y1sHSJR@vostro.rjw.lan> (raw)
In-Reply-To: <20140429100023.GF2639@e103034-lin>

On Tuesday, April 29, 2014 11:00:23 AM Morten Rasmussen wrote:
> On Tue, Apr 29, 2014 at 12:11:47AM +0100, Rafael J. Wysocki wrote:
> > On Monday, April 28, 2014 01:07:31 PM Daniel Lezcano wrote:
> 
> [...]
> 
> > > I'm really wondering if the cgroup couldn't be a good solution:
> > > 
> > > Amit pointed the conflict about the power vs performance with some 
> > > applications. We want to have for example a game to run fast performance 
> > > and some other application to save power.
> > 
> > You can't save power.
> > 
> > Power is the energy flow *rate*.  It's like speed, so how can you save it?
> > 
> > If you talk about saving in this context, please always talk about energy as
> > well, because that's what we want to save.
> > 
> > This means that positioning power against performance doesn't make any sense
> > whatsoever.  You could try to position energy efficiency (that is, the relative
> > cost of doing work in terms of energy) against performance, but even that is
> > questionable, because, as I said in one of the previous messages, what is good
> > for performance is often good for energy efficiency too (think about race to
> > idle for example).
> > 
> > In other words, you want to have a knob whose both ends may happen to mean
> > the same thing.  Wouldn't that be a little odd?
> > 
> > In my opinion it would be much better to have a knob representing the current
> > relative value of energy to the user (which may depend on things like whether
> > or not the system is on battery etc) and meaning how far we need to go with
> > energy saving efforts.
> 
> I agree, more or less. I think of performance and energy awareness as
> optimization objectives. If we only care about performance we are
> dealing with a single-objective optimization problem. We do what it
> takes to get the best possible performance without considering energy at
> all. Energy awareness is IMO as multi-objective optimization problem. We
> want to save energy, but do so without sacrificing too much performance.
> What "too much" is depends on the scenario (application).
> 
> Energy efficiency and performance are different objectives, but I agree
> that the means to get better energy efficiency might be the same as
> those to get better performance in some cases. IMO, energy awareness is
> not a big switch to turn on specific scheduling mechanics (or other
> mechnaics in the kernel) such as task packing and disabling expensive
> DVFS states, it is about changing the scheduling optimization objective
> to include energy in the scheduling decisions.

Very well stated.

Also it is about to what extent those decisions should take energy into
account.

> That is, try to save energy for the current scenario. That includes race to
> idle if that is the best way for the particular application and platform/system
> topology.
> 
> > 
> > So if that knob is 0, we'll do things that are known-good for performance.
> > If it is 1, we'll do some extra effort to save enery as well possibly at
> > a small expense of performance if that's necessary.  If it is 100, we'll do
> > all we can to save as much energy as possible without caring about performance
> > at all.
> > 
> > And it doesn't even have to be scheduler-specific, it very well may be global.
> 
> I like the idea of knob representing the weight of energy awareness.
> Whether it should be global, per task, or per cgroup I'm not sure about.

A global knob might be useful to other parts of the kernel too, like device
drivers implementing runtime PM, for example.  In that context per task
or per cgroup knobs wouldn't be very useful.

Also there may be a user space component and a kernel component in it,
combined somehow, so that user space can influence its value and so that
the kernel can adjust it in response to power events automatically.

Thanks!

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

  reply	other threads:[~2014-04-29 22:03 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-24 12:24 [PATCH 0/3] sched: idle: Provide the basis to integrate cpuidle Daniel Lezcano
2014-04-24 12:24 ` [PATCH 1/3] sched: idle: Encapsulate the code to compile it out Daniel Lezcano
2014-04-30 17:39   ` Nicolas Pitre
2014-04-24 12:24 ` [PATCH 2/3] sched: idle: Add sched balance option Daniel Lezcano
     [not found]   ` <CAP245DX9wewQFhcyGj5ZuNE7hHC4fRn90POC32HLF6ugja6nJg@mail.gmail.com>
2014-04-24 13:30     ` Daniel Lezcano
2014-04-25 10:54       ` Amit Kucheria
2014-04-25 11:46         ` Rafael J. Wysocki
2014-04-25 12:17           ` Daniel Lezcano
2014-04-25 13:20           ` Peter Zijlstra
2014-04-25 17:01             ` Daniel Lezcano
2014-04-25 18:43               ` Peter Zijlstra
2014-04-28 10:09                 ` Daniel Lezcano
2014-04-28 10:28                   ` Peter Zijlstra
2014-04-28 11:07                     ` Daniel Lezcano
2014-04-28 11:21                       ` Peter Zijlstra
2014-04-28 23:11                       ` Rafael J. Wysocki
2014-04-29 10:00                         ` Morten Rasmussen
2014-04-29 22:19                           ` Rafael J. Wysocki [this message]
2014-04-29 10:25                         ` Daniel Lezcano
2014-05-05  0:32                           ` Rafael J. Wysocki
2014-04-29  9:26                       ` Morten Rasmussen
2014-04-26  0:18             ` Rafael J. Wysocki
2014-04-26  6:17               ` Ingo Molnar
2014-04-27 13:23                 ` Rafael J. Wysocki
2014-04-29 10:50                   ` Morten Rasmussen
2014-04-29 22:02                     ` Rafael J. Wysocki
2014-04-26 10:55               ` Peter Zijlstra
2014-04-27 13:54                 ` Rafael J. Wysocki
2014-04-27 19:39                   ` Peter Zijlstra
2014-04-25 13:22         ` Peter Zijlstra
2014-04-24 12:24 ` [PATCH 3/3] sched: idle: Store the idle state the cpu is Daniel Lezcano
2014-04-24 16:16   ` Rafael J. Wysocki
2014-04-24 16:13 ` [PATCH 0/3] sched: idle: Provide the basis to integrate cpuidle 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=2877197.W88Y1sHSJR@vostro.rjw.lan \
    --to=rjw@rjwysocki.net \
    --cc=amit.kucheria@linaro.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=morten.rasmussen@arm.com \
    --cc=peterz@infradead.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®