From: juri.lelli@arm.com (Juri Lelli)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH v2 0/4] CPUs capacity information for heterogeneous systems
Date: Mon, 18 Jan 2016 15:13:16 +0000 [thread overview]
Message-ID: <20160118151316.GD7159@e106622-lin> (raw)
In-Reply-To: <56994D87.6000709@linaro.org>
Hi Steve,
On 15/01/16 11:50, Steve Muckle wrote:
> On 01/08/2016 06:09 AM, Juri Lelli wrote:
> > 2. Dynamic profiling at boot (v2)
> >
> > pros: - does not require a standardized definition of capacity
> > - cannot be incorrectly tuned (once benchmark is fixed)
> > - does not require user/integrator work
> >
> > cons: - not easy to come up with a clean solution, as it seems interaction
> > with several subsystems (e.g., cpufreq) is required
> > - not easy to agree upon a single benchmark (that has to be both
> > representative and simple enough to run at boot)
> > - numbers might (and do) vary from boot to boot
>
> An important additional con that was mentioned earlier IIRC was the
> additional boot time required for the benchmark.
Right. I forgot about that.
> Perhaps there could be
> a kernel command line argument to bypass the benchmark if it is known
> that predetermined values will be provided via sysfs later?
>
This might work, yes.
> Though there may be another issue with that as mentioned below.
>
> > 3. sysfs (v1)
> >
> > pros: - clean and super easy to implement
> > - values don't require to be physical properties, defining them is
> > probably easier
> >
> > cons: - CPUs capacity have to be provided after boot (by some init script?)
> > - API is modified, still some discussion/review is needed
> > - values can still be incorrectly used for runtime tuning purposes
>
> Initializing the values via userspace init will cause more of the boot
> process to run with incorrect CPU capacity values. Boot times may be
> increased with tasks running on suboptimal CPUs. Such increases may also
> not be deterministic.
>
> Extending the kernel command line idea above, perhaps capacity values
> could be provided there as well, similar to the lpj parameter? That has
> scalability issues though if there's a huge highly heterogeneous platform...
>
Yeah, adding such option is not difficult, but I'm also a bit concerned
about the scalability of such a thing.
> DT solves these issues and would be the perfect place for this - we are
> defining the compute capacity of a CPU which is a property of the
> hardware. However there are a couple things forcing us to compromise.
> One is that the amount and detail of information required to adequately
> capture the computational abilities of a CPU across all possible
> workloads seem onerous to collect and enumerate. The second is that even
> if we were willing to undertake that, CPU vendors probably won't be
> forthcoming with that information.
>
You mean because they won't publish performance data of their hw?
But we already use per platform normalized values (as you are proposing
below). So that a platform to platform comparison doesn't make sense.
> Despite this DT still seems to me like the best way to go. At their
> heart these are properties of the hardware, even if we can't specify
> them as such per se because of the problems above. The capacity would
> have to be defined as a relative value among CPUs. And while it's true
> it may be abused for tuning purposes, that's true of any strategy.
> Certainly the sysfs strategy and even if only a dynamic option is
> provided, it is guaranteed to be hacked by platform vendors.
I also like the DT approach and consider the sysfs option as something
that can go together with any solution we want to adopt.
Best,
- Juri
next prev parent reply other threads:[~2016-01-18 15:13 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-08 14:09 [RFC PATCH v2 0/4] CPUs capacity information for heterogeneous systems Juri Lelli
2016-01-08 14:09 ` [RFC PATCH v2 1/4] ARM: initialize cpu_scale to its default Juri Lelli
2016-01-08 14:09 ` [RFC PATCH v2 2/4] drivers/cpufreq: implement init_cpu_capacity_default() Juri Lelli
2016-01-08 14:09 ` [RFC PATCH v2 3/4] arm: Enable dynamic CPU capacity initialization Juri Lelli
2016-01-08 14:09 ` [RFC PATCH v2 4/4] arm64: " Juri Lelli
2016-01-15 18:01 ` [RFC PATCH v2 0/4] CPUs capacity information for heterogeneous systems Mark Brown
2016-01-18 15:01 ` Juri Lelli
2016-01-15 19:50 ` Steve Muckle
2016-01-18 15:13 ` Juri Lelli [this message]
2016-01-18 16:13 ` Vincent Guittot
2016-01-18 16:30 ` Juri Lelli
2016-01-18 16:42 ` Vincent Guittot
2016-01-18 17:08 ` Juri Lelli
2016-01-18 17:23 ` Vincent Guittot
2016-01-19 10:59 ` Catalin Marinas
2016-01-19 11:23 ` Juri Lelli
2016-01-19 14:29 ` Juri Lelli
2016-01-19 19:48 ` Steve Muckle
2016-01-19 21:10 ` Mark Brown
2016-01-20 10:22 ` Juri Lelli
2016-01-18 19:25 ` Steve Muckle
2016-01-19 15:05 ` Peter Zijlstra
2016-01-19 17:50 ` Mark Brown
2016-01-20 10:25 ` 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=20160118151316.GD7159@e106622-lin \
--to=juri.lelli@arm.com \
--cc=linux-arm-kernel@lists.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;
as well as URLs for NNTP newsgroup(s).