From: Juri Lelli <juri.lelli@arm.com>
To: linux-kernel@vger.kernel.org
Cc: linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, peterz@infradead.org,
vincent.guittot@linaro.org, robh+dt@kernel.org,
mark.rutland@arm.com, linux@arm.linux.org.uk,
sudeep.holla@arm.com, lorenzo.pieralisi@arm.com,
catalin.marinas@arm.com, will.deacon@arm.com,
morten.rasmussen@arm.com, dietmar.eggemann@arm.com
Subject: Re: [RFC PATCH 0/8] CPUs capacity information for heterogeneous systems
Date: Mon, 7 Dec 2015 12:02:44 +0000 [thread overview]
Message-ID: <20151207120244.GE14571@e106622-lin> (raw)
In-Reply-To: <1448288921-30307-1-git-send-email-juri.lelli@arm.com>
On 23/11/15 14:28, Juri Lelli wrote:
> Hi all,
>
Hi again everybody,
thanks a lot to Rob and Vincent for feedback, but, IMHO, we'd need more
discussion happening on this series to figure out how we move forward;
so, this is a ping :-). It's a simple information that we need to figure
out how to provide, and in which form, but it has the potential to form
a standardized basis for achieving important performance benefits.
Thanks,
- Juri
> ARM systems may be configured to have CPUs with different power/performance
> characteristics within the same chip. In this case, additional information has
> to be made available to the kernel (the scheduler in particular) for it to be
> aware of such differences and take decisions accordingly. This posting stems
> from the ongoing discussion about introducing a simple platform energy cost
> model to guide scheduling decisions (a.k.a Energy Aware Scheduling [1]), but
> also aims to be an independent track aimed to standardise the way we make the
> scheduler aware of heterogenous CPU systems. With these patches and in addition
> patches from [1] (that make the scheduler wakeup paths aware of heterogenous
> CPU systems) we enable the scheduler to have good default performance on such
> systems. In addition, we get a clearly defined way of providing the scheduler
> with needed information about CPU capacity on such systems.
>
> CPU capacity is defined in this context as a number that provides the scheduler
> information about CPUs heterogeneity. Such heterogeneity can come from
> micro-architectural differences (e.g., ARM big.LITTLE systems) or maximum
> frequency at which CPUs can run (e.g., SMP systems with multiple frequency
> domains and different max frequencies). Heterogeneity in this context is about
> differing performance characteristics; in practice, the binding that we propose
> in this RFC tries to capture a first-order approximation of the relative
> performance of CPUs.
>
> This RFC proposes a solution to the problem of how do we init CPUs original
> capacity. The way it works today, and for arm A15/A7 systems only, is that we
> rely on cpu_efficiency magic numbers from arch/arm/kernel/topology.c and the
> existence of clock-frequency dtb properties; having those values available, we
> then do some math to come up with capacities we know from measurement (e.g.,
> EAS energy model), e.g. for TC2 they are 430 for A7 and 1024 for A15.
> Currently, arm64 doesn't have such a feature at all.
>
> With this patchset we provide CPUs capacity information either from DT or from
> sysfs interface. Such information is standardized for both arm and arm64.
>
> Patches high level description:
>
> o 01/08 cleans up how cpu_scale is initialized in arm
> o 02/08 introduces documentation for the new optional DT binding
> o [03-06]/08 add cpu-capacity attribute to TC2 and Juno DTs and provide
> parsing of such information at boot time
> o [07-08]/08 introduce sysfs attribute
>
> The patchset is based on top of tip/sched/core as of today.
>
> In case you would like to test this out, I pushed a branch here:
>
> git://linux-arm.org/linux-jl.git upstream/default_caps_dt
>
> This branch contains additional patches, useful to better understand how CPU
> capacity information is actually used by the scheduler. Discussion regarding
> these additional patches will be started with a different posting in the
> future. We just didn't want to make discussion too broad, as we realize that
> this set can be controversial already on its own.
>
> Comments, concerns and rants are more than welcome!
>
> Best,
>
> - Juri
>
> Juri Lelli (8):
> ARM: initialize cpu_scale to its default
> Documentation: arm: define DT cpu capacity bindings
> arm: parse cpu capacity from DT
> arm, dts: add TC2 cpu capacity information
> arm64: parse cpu capacity from DT
> arm64, dts: add Juno cpu capacity information
> arm: add sysfs cpu_capacity attribute
> arm64: add sysfs cpu_capacity attribute
>
> .../devicetree/bindings/arm/cpu-capacity.txt | 227 +++++++++++++++++++++
> Documentation/devicetree/bindings/arm/cpus.txt | 17 ++
> arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 6 +
> arch/arm/kernel/topology.c | 122 ++++++++++-
> arch/arm64/boot/dts/arm/juno.dts | 7 +
> arch/arm64/kernel/topology.c | 114 +++++++++++
> 6 files changed, 489 insertions(+), 4 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/arm/cpu-capacity.txt
>
> --
> 2.2.2
>
next prev parent reply other threads:[~2015-12-07 12:02 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-23 14:28 [RFC PATCH 0/8] CPUs capacity information for heterogeneous systems Juri Lelli
2015-11-23 14:28 ` [RFC PATCH 1/8] ARM: initialize cpu_scale to its default Juri Lelli
2015-11-30 11:13 ` Vincent Guittot
2015-11-23 14:28 ` [RFC PATCH 2/8] Documentation: arm: define DT cpu capacity bindings Juri Lelli
2015-11-24 2:06 ` Rob Herring
2015-11-24 10:54 ` Juri Lelli
2015-11-30 9:59 ` Vincent Guittot
2015-12-01 11:20 ` Juri Lelli
2015-12-10 14:14 ` Dietmar Eggemann
2015-12-11 10:09 ` Juri Lelli
2015-12-10 15:30 ` Mark Brown
2015-12-10 17:58 ` Juri Lelli
2015-12-11 17:49 ` Mark Brown
[not found] ` <20151211174940.GQ5727-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-12-14 12:36 ` Juri Lelli
2015-12-14 16:59 ` Mark Brown
2015-12-15 12:22 ` Juri Lelli
2015-12-15 13:39 ` Mark Brown
2015-12-15 14:01 ` Mark Rutland
2015-12-15 14:24 ` Juri Lelli
2015-12-15 14:50 ` Mark Rutland
2015-12-15 15:36 ` Juri Lelli
2015-12-15 15:08 ` Mark Brown
[not found] ` <20151215150813.GZ5727-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-12-15 15:32 ` Mark Rutland
2015-12-15 15:46 ` Juri Lelli
2015-12-15 15:57 ` Mark Rutland
2015-12-15 16:23 ` Catalin Marinas
2015-12-15 16:41 ` Mark Rutland
2015-12-15 16:59 ` Vincent Guittot
[not found] ` <CAKfTPtAuosPcL8bbQ27Y-vUE1h4QRY8hGESnm4YrxqRAQ3K=5g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-15 17:15 ` Mark Rutland
2015-12-15 17:47 ` Vincent Guittot
[not found] ` <CAKfTPtBzWcNHx+Fi7hUabNpPsd1thFAkPnLcpsnqbQp6Qq24cQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-15 18:39 ` Mark Rutland
2015-12-15 17:17 ` Mark Brown
[not found] ` <20151215171713.GA5727-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-12-15 17:28 ` Mark Rutland
2015-12-15 17:45 ` Mark Brown
2015-12-15 18:10 ` Mark Rutland
2015-12-15 18:45 ` Mark Brown
2015-12-17 9:07 ` Juri Lelli
2015-12-15 13:55 ` Vincent Guittot
2015-11-23 14:28 ` [RFC PATCH 3/8] arm: parse cpu capacity from DT Juri Lelli
2015-12-10 14:14 ` Dietmar Eggemann
[not found] ` <566988DD.9080005-5wv7dgnIgG8@public.gmane.org>
2015-12-11 10:12 ` Juri Lelli
2015-11-23 14:28 ` [RFC PATCH 4/8] arm, dts: add TC2 cpu capacity information Juri Lelli
2015-11-23 14:28 ` [RFC PATCH 5/8] arm64: parse cpu capacity from DT Juri Lelli
2015-12-10 14:15 ` Dietmar Eggemann
2015-12-11 10:07 ` Juri Lelli
2015-11-23 14:28 ` [RFC PATCH 6/8] arm64, dts: add Juno cpu capacity information Juri Lelli
2015-11-23 14:28 ` [RFC PATCH 7/8] arm: add sysfs cpu_capacity attribute Juri Lelli
2015-11-23 14:28 ` [RFC PATCH 8/8] arm64: " Juri Lelli
2015-12-10 14:15 ` Dietmar Eggemann
2015-12-10 15:59 ` Mark Brown
2015-12-10 18:01 ` Juri Lelli
2015-12-11 17:54 ` Mark Brown
2015-12-07 12:02 ` Juri Lelli [this message]
2015-12-07 12:11 ` [RFC PATCH 0/8] CPUs capacity information for heterogeneous systems Russell King - ARM Linux
2015-12-07 12:36 ` Juri Lelli
2015-12-07 13:18 ` Russell King - ARM Linux
[not found] ` <20151207131843.GP8644-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2015-12-07 15:41 ` Juri Lelli
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=20151207120244.GE14571@e106622-lin \
--to=juri.lelli@arm.com \
--cc=catalin.marinas@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=dietmar.eggemann@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=morten.rasmussen@arm.com \
--cc=peterz@infradead.org \
--cc=robh+dt@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=vincent.guittot@linaro.org \
--cc=will.deacon@arm.com \
/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).