From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Arjan van de Ven <arjan@linux.intel.com>
Cc: Vladimir Davydov <vdavydov@parallels.com>,
Ingo Molnar <mingo@elte.hu>, Len Brown <lenb@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cpuidle: menu: use nr_running instead of cpuload for calculating perf mult
Date: Mon, 04 Jun 2012 19:16:07 +0200 [thread overview]
Message-ID: <1338830167.28282.115.camel@twins> (raw)
In-Reply-To: <4FCCE823.8090700@linux.intel.com>
On Mon, 2012-06-04 at 09:53 -0700, Arjan van de Ven wrote:
> >
> > False, you can have 0 idle time and still have low load.
>
> 1 is not low in this context fwiw.
I think you're mis-understanding the load number you're using. I suspect
you're expecting something like the load-avg top/uptime provide. You're
very much not using anything similar.
Nor do we compute anything like that, and I want to avoid having to
compute anything like that because its expensive.
> >> but because idle
> >> time tends to be bursty, we can still be idle for, say, a millisecond
> >> every 10 milliseconds. In this scenario, the load average is used to
> >> ensure that the 200 usecond cost of exiting idle is acceptable.
> >
> > So what you're saying is that if you have 1ms idle in 10ms, it might not
> > be a continuous 1ms. And you're using load as a measure of how many
> > fragments it comes apart in?
>
> no
>
> what I'm saying is that if you have a workload where you have 10 msec of
> work, then 1 msec of idle, then 10 msec of work, 1 msec of idle etc etc,
> it is very different from 100 msec of work, 10 msec of idle, 100 msec of
> work, even though utilization is the same.
Sure..
> what the logic is trying to do, on a 10 km level, is to limit the damage
> of accumulated C state exit time.
> (I'll avoid the word "latency" here, since the real time people will
> then immediately think this is about controlling latency response, which
> it isn't)
But why? There's a natural limit to his, say the wakeup costs 0.2ms then
you can only do 5k of those a second. Once you need to actually do some
work as well this comes down.
But its all idle time, you cannot be idle longer than there is a lack of
work. So if you're idle too long (because of long exit latency) your
work shifts and the future idle time reduces, eventually causing a lower
C state to be used.
Also, when you notice you're waking up too soon, you can quickly ramp
down on the C state levels.
> Now, if you're very idle for a sustained duration (e.g. low load),
> you're assumed not sensitive to a bit of performance cost.
> but if you're actually busy (over a longer period, not just "right
> now"), you're assumed to be sensitive to the performance cost,
> and what the algorithm does is make it less easy to go into the
> expensive states.
My brain still sparks and fizzles when I read that.. it just doesn't
compute.
What performance? performance isn't a well defined word.
> the closest metric we have right now to "sensitive to performance cost"
> that I know of is "load average". If the scheduler has a better metric,
> I'd be more than happy to switch the idle selection code over to it...
I can't suggest anything better for something I've still no clue about.
You're completely failing to explain this thing to me.
> note that the idle selection code has 3 metrics, this is only one of them:
> 1. PM_QOS latency tolerance
> 2. Energy break even
> 3. Performance tolerance
That 3rd, I'm completely failing to understand.
next prev parent reply other threads:[~2012-06-04 17:16 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-04 10:24 [PATCH] cpuidle: menu: use nr_running instead of cpuload for calculating perf mult Vladimir Davydov
2012-06-04 10:32 ` Peter Zijlstra
2012-06-04 10:50 ` Vladimir Davydov
2012-06-04 13:13 ` Arjan van de Ven
2012-06-04 13:45 ` Peter Zijlstra
2012-06-04 13:48 ` Arjan van de Ven
2012-06-04 15:08 ` Peter Zijlstra
2012-06-04 15:14 ` Arjan van de Ven
2012-06-04 15:26 ` Peter Zijlstra
2012-06-04 15:39 ` Arjan van de Ven
2012-06-04 16:33 ` Peter Zijlstra
2012-06-04 16:53 ` Arjan van de Ven
2012-06-04 17:08 ` Vladimir Davydov
2012-06-04 17:17 ` Peter Zijlstra
2012-06-04 17:16 ` Peter Zijlstra [this message]
2012-06-04 17:25 ` Arjan van de Ven
2012-06-04 20:31 ` Peter Zijlstra
2012-06-04 20:45 ` Arjan van de Ven
2012-06-04 21:14 ` Peter Zijlstra
2012-06-04 20:40 ` Peter Zijlstra
2012-06-05 3:48 ` Mike Galbraith
2012-06-04 13:15 ` Arjan van de Ven
2012-06-04 13:19 ` Vladimir Davydov
2012-11-27 19:02 ` Vladimir Davydov
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=1338830167.28282.115.camel@twins \
--to=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=vdavydov@parallels.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 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.