From: Catalin Marinas <catalin.marinas@arm.com>
To: Arjan van de Ven <arjan@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Morten Rasmussen <Morten.Rasmussen@arm.com>,
"mingo@kernel.org" <mingo@kernel.org>,
"vincent.guittot@linaro.org" <vincent.guittot@linaro.org>,
"preeti@linux.vnet.ibm.com" <preeti@linux.vnet.ibm.com>,
"alex.shi@intel.com" <alex.shi@intel.com>,
"efault@gmx.de" <efault@gmx.de>,
"pjt@google.com" <pjt@google.com>,
"len.brown@intel.com" <len.brown@intel.com>,
"corbet@lwn.net" <corbet@lwn.net>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"torvalds@linux-foundation.org" <torvalds@linux-foundation.org>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linaro-kernel@lists.linaro.org" <linaro-kernel@lists.linaro.org>
Subject: Re: [RFC][PATCH 0/9] sched: Power scheduler design proposal
Date: Wed, 17 Jul 2013 15:14:26 +0100 [thread overview]
Message-ID: <20130717141426.GG27948@arm.com> (raw)
In-Reply-To: <51E5655C.7050304@linux.intel.com>
On Tue, Jul 16, 2013 at 04:23:08PM +0100, Arjan van de Ven wrote:
> On 7/16/2013 5:42 AM, Catalin Marinas wrote:
> > Morten's power scheduler tries to address the above and it will grow
> > into controlling a new model of power driver (and taking into account
> > Arjan's and others' comments regarding the API). At the same time, we
> > need some form of task packing. The power scheduler can drive this
> > (currently via cpu_power) or can simply turn a knob if there are better
> > options that will be accepted in the scheduler.
>
> how much would you be helped if there was a simple switch
>
> sort left versus sort right
>
> (assuming the big cores are all either low or high numbers)
It helps a bit compared to the current behaviour but there is a lot of
room for improvement.
> the sorting is mostly statistical, but that's good enough in practice..
> each time a task wakes up, you get a bias towards either low or high
> numbered idle cpus
If cores within a cluster (socket) are not power-gated individually
(implementation dependent), it makes more sense to spread the tasks
among the cores to either get a lower frequency or just get to idle
quicker. For little cores, even when they are individually power-gated,
they don't consume much so we would rather spread the tasks equally.
> very quickly all tasks will be on one side, unless your system is so
> loaded that all cpus are full.
It should be more like left socket vs both sockets with the possibility
of different balancing within a socket. But then we get back to the
sched_smt/sched_mc power aware scheduling that was removed from the
kernel.
It's also important when to make this decision to sort left vs right and
we want to avoid migrating threads unnecessarily. There could be small
threads (e.g. an mp3 decoding thread) that should stay on the little
core.
Power aware scheduling should not affect the performance (call them
benchmarks) but the scheduler could take power implications into
account. The hard part is formalising this with differences between
architectures and SoCs. Maybe a low-level driver or arch hook like "get
me the most power efficient CPU that can run a task" but it's not clear
how this would work (we can't easily predict what the future load will
be).
Our proposal is to split the balancing into two problems: equal
balancing vs. CPU capacity (the latter can be improved to address arch
concerns). These two problems can be later unified once we have a better
understanding of its implications across architectures.
For big.LITTLE we could work around the scheduler (in a very hacky way)
with a combination of pstate/powerclamp driver which forces idle on the
big cores when not needed but I would rather get the scheduler to make
such decisions.
--
Catalin
next prev parent reply other threads:[~2013-07-17 14:16 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-09 15:55 [RFC][PATCH 0/9] sched: Power scheduler design proposal Morten Rasmussen
2013-07-09 15:55 ` [RFC][PATCH 1/9] sched: Introduce power scheduler Morten Rasmussen
2013-07-09 16:48 ` Arjan van de Ven
2013-07-10 2:10 ` Arjan van de Ven
2013-07-10 11:11 ` Morten Rasmussen
2013-07-10 11:19 ` Vincent Guittot
2013-07-09 15:55 ` [RFC][PATCH 2/9] sched: Redirect update_cpu_power to sched/power.c Morten Rasmussen
2013-07-09 15:55 ` [RFC][PATCH 3/9] sched: Make select_idle_sibling() skip cpu with a cpu_power of 1 Morten Rasmussen
2013-07-09 15:55 ` [RFC][PATCH 4/9] sched: Make periodic load-balance disregard cpus " Morten Rasmussen
2013-07-09 15:55 ` [RFC][PATCH 5/9] sched: Make idle_balance() skip " Morten Rasmussen
2013-07-09 15:55 ` [RFC][PATCH 6/9] sched: power: add power_domain data structure Morten Rasmussen
2013-07-09 15:55 ` [RFC][PATCH 7/9] sched: power: Add power driver interface Morten Rasmussen
2013-07-09 15:55 ` [RFC][PATCH 8/9] sched: power: Add initial frequency scaling support to power scheduler Morten Rasmussen
2013-07-10 13:10 ` Arjan van de Ven
2013-07-12 12:51 ` Morten Rasmussen
2013-07-12 13:06 ` Catalin Marinas
2013-07-12 15:37 ` Arjan van de Ven
2013-07-09 15:55 ` [RFC][PATCH 9/9] sched: power: cpufreq: Initial schedpower cpufreq governor Morten Rasmussen
2013-07-09 16:58 ` [RFC][PATCH 0/9] sched: Power scheduler design proposal Arjan van de Ven
2013-07-10 11:16 ` Morten Rasmussen
2013-07-10 13:05 ` Arjan van de Ven
2013-07-12 12:46 ` Morten Rasmussen
2013-07-12 15:35 ` Arjan van de Ven
2013-07-12 13:00 ` Catalin Marinas
2013-07-12 15:44 ` Arjan van de Ven
2013-07-11 11:34 ` Preeti U Murthy
2013-07-12 13:48 ` Morten Rasmussen
2013-07-15 3:43 ` Preeti U Murthy
2013-07-15 9:55 ` Catalin Marinas
2013-07-15 15:24 ` Arjan van de Ven
2013-07-12 13:31 ` Catalin Marinas
2013-07-13 6:49 ` Peter Zijlstra
2013-07-13 10:23 ` Catalin Marinas
2013-07-15 7:53 ` Vincent Guittot
2013-07-15 20:39 ` Peter Zijlstra
2013-07-16 12:42 ` Catalin Marinas
2013-07-16 15:23 ` Arjan van de Ven
2013-07-17 14:14 ` Catalin Marinas [this message]
2013-07-24 13:50 ` Morten Rasmussen
2013-07-24 15:16 ` Arjan van de Ven
2013-07-24 16:46 ` Morten Rasmussen
2013-07-24 16:48 ` Arjan van de Ven
2013-07-25 8:00 ` Morten Rasmussen
2013-07-13 14:40 ` Arjan van de Ven
2013-07-15 19:59 ` Peter Zijlstra
2013-07-15 20:37 ` Arjan van de Ven
2013-07-15 21:03 ` Peter Zijlstra
2013-07-15 22:46 ` Arjan van de Ven
2013-07-16 20:45 ` David Lang
2013-07-15 20:41 ` Arjan van de Ven
2013-07-15 21:06 ` Peter Zijlstra
2013-07-15 21:12 ` Peter Zijlstra
2013-07-15 22:52 ` Arjan van de Ven
2013-07-16 17:38 ` Peter Zijlstra
2013-07-16 18:44 ` Arjan van de Ven
2013-07-16 19:21 ` Peter Zijlstra
2013-07-16 19:57 ` Arjan van de Ven
2013-07-16 20:17 ` Peter Zijlstra
2013-07-16 20:21 ` Arjan van de Ven
2013-07-16 20:32 ` Arjan van de Ven
2013-07-15 22:46 ` Arjan van de Ven
2013-07-13 16:14 ` Arjan van de Ven
2013-07-15 2:05 ` Alex Shi
2013-07-24 13:16 ` Morten Rasmussen
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=20130717141426.GG27948@arm.com \
--to=catalin.marinas@arm.com \
--cc=Morten.Rasmussen@arm.com \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@intel.com \
--cc=arjan@linux.intel.com \
--cc=corbet@lwn.net \
--cc=efault@gmx.de \
--cc=len.brown@intel.com \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=preeti@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.