From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: "Brown, Len" <len.brown@intel.com>
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>,
Arjan van de Ven <arjan@linux.intel.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Preeti U Murthy <preeti@linux.vnet.ibm.com>,
Peter Zijlstra <peterz@infradead.org>,
Preeti Murthy <preeti.lkml@gmail.com>,
"mingo@redhat.com" <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
LKML <linux-kernel@vger.kernel.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
Lists linaro-kernel <linaro-kernel@lists.linaro.org>
Subject: Re: [RFC PATCH 3/3] idle: store the idle state index in the struct rq
Date: Sat, 1 Feb 2014 15:40:21 +0000 [thread overview]
Message-ID: <20140201154021.GA7827@e102568-lin.cambridge.arm.com> (raw)
In-Reply-To: <1A7043D5F58CCB44A599DFD55ED4C948452D34DC@FMSMSX106.amr.corp.intel.com>
On Sat, Feb 01, 2014 at 06:00:40AM +0000, Brown, Len wrote:
> > Right now (on ARM at least but I imagine this is pretty universal), the
> > biggest impact on information accuracy for a CPU depends on what the
> > other CPUs are doing. The most obvious example is cluster power down.
> > For a cluster to be powered down, all the CPUs sharing this cluster must
> > also be powered down. And all those CPUs must have agreed to a possible
> > cluster power down in advance as well. But it is not because an idle
> > CPU has agreed to the extra latency imposed by a cluster power down that
> > the cluster has actually powered down since another CPU in that cluster
> > might still be running, in which case the recorded latency information
> > for that idle CPU would be higher than it would be in practice at that
> > moment.
>
> That will not work.
>
> When a CPU goes idle, it uses the CURRENT criteria for entering that state.
> If the criteria change after it has entered the state, are you going
> to wake it up so it can re-evaluate? No.
>
> That is why the state must describe the worst case latency
> that CPU may see when waking from the state on THAT entry.
>
> That is why we use the package C-state numbers to describe
> core C-states on IA.
That's what we do on ARM too for cluster states. But the state decision
might turn out suboptimal in this case too for the same reasons you have
just mentioned.
There are some use cases when it matters (and where monitoring the
timers on all CPUs in a cluster shows that aborting cluster shutdown is
required because some CPUs have a pending timer and the governor decision is
stale), there are some use cases where it does not matter at all.
We talked about this at LPC and I guess x86 FW/HW plays a role in
package states demotion too, we can do it in FW on ARM.
Overall we all know that whatever we do, it is impossible to know the
precise C-state a CPU is in, even if we resort to HW probing, it is just
a matter of deciding what level of abstraction is necessary for the
scheduler to work properly.
Thanks for bringing this topic up.
Lorenzo
next prev parent reply other threads:[~2014-02-01 15:40 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-30 14:09 [RFC PATCH 0/3] cpuidle/sched: move main idle function in the idle.c Daniel Lezcano
2014-01-30 14:09 ` [RFC PATCH 1/3] cpuidle: split cpuidle_idle_call main function into functions Daniel Lezcano
2014-01-30 15:27 ` Peter Zijlstra
2014-01-30 15:39 ` Daniel Lezcano
2014-01-30 19:39 ` Nicolas Pitre
2014-01-31 14:10 ` Daniel Lezcano
2014-01-30 14:09 ` [RFC PATCH 2/3] cpuidle: move the cpuidle_idle_call function to idle.c Daniel Lezcano
2014-01-30 19:42 ` Nicolas Pitre
2014-01-30 14:09 ` [RFC PATCH 3/3] idle: store the idle state index in the struct rq Daniel Lezcano
2014-01-30 15:31 ` Peter Zijlstra
2014-01-30 16:27 ` Daniel Lezcano
2014-01-30 16:35 ` Peter Zijlstra
2014-01-30 17:25 ` Daniel Lezcano
2014-01-30 17:50 ` Lorenzo Pieralisi
2014-01-30 21:02 ` Nicolas Pitre
2014-01-31 9:46 ` Vincent Guittot
2014-01-31 10:04 ` Lorenzo Pieralisi
2014-01-31 10:44 ` Daniel Lezcano
2014-01-31 8:45 ` Preeti Murthy
2014-01-31 9:02 ` Peter Zijlstra
2014-01-31 9:39 ` Preeti U Murthy
2014-01-31 10:24 ` Peter Zijlstra
2014-01-31 14:04 ` Daniel Lezcano
2014-01-31 14:12 ` Dietmar Eggemann
2014-01-31 15:07 ` Arjan van de Ven
2014-01-31 15:37 ` Daniel Lezcano
2014-01-31 15:50 ` Arjan van de Ven
2014-01-31 16:35 ` Daniel Lezcano
2014-01-31 16:42 ` Arjan van de Ven
2014-01-31 18:19 ` Nicolas Pitre
2014-02-01 6:00 ` Brown, Len
2014-02-01 15:31 ` Nicolas Pitre
2014-02-01 19:39 ` Brown, Len
2014-02-01 20:13 ` Nicolas Pitre
2014-02-01 15:40 ` Lorenzo Pieralisi [this message]
2014-02-03 12:54 ` Morten Rasmussen
2014-02-03 14:38 ` Arjan van de Ven
2014-02-03 14:56 ` Peter Zijlstra
2014-02-03 16:17 ` Arjan van de Ven
2014-02-11 16:41 ` Peter Zijlstra
2014-02-11 17:12 ` Arjan van de Ven
2014-02-11 19:47 ` Peter Zijlstra
2014-02-12 15:16 ` Lorenzo Pieralisi
2014-02-12 16:14 ` Arjan van de Ven
2014-02-12 17:37 ` Lorenzo Pieralisi
2014-02-12 19:05 ` Nicolas Pitre
2014-02-04 9:14 ` Ingo Molnar
2014-02-04 14:53 ` Arjan van de Ven
2014-02-04 14:56 ` Arjan van de Ven
2014-02-03 14:58 ` Nicolas Pitre
2014-01-31 10:15 ` Daniel Lezcano
2014-02-03 6:33 ` Preeti U Murthy
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=20140201154021.GA7827@e102568-lin.cambridge.arm.com \
--to=lorenzo.pieralisi@arm.com \
--cc=arjan@linux.intel.com \
--cc=daniel.lezcano@linaro.org \
--cc=len.brown@intel.com \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=nicolas.pitre@linaro.org \
--cc=peterz@infradead.org \
--cc=preeti.lkml@gmail.com \
--cc=preeti@linux.vnet.ibm.com \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
/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®