From: Linus Torvalds <torvalds@linux-foundation.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Jesper Krogh <jesper@krogh.cc>, john stultz <johnstul@us.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Len Brown <len.brown@intel.com>
Subject: Re: Linux 2.6.29-rc6
Date: Tue, 17 Mar 2009 08:48:19 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.2.00.0903170831020.3082@localhost.localdomain> (raw)
In-Reply-To: <20090317081412.GA24115@elte.hu>
On Tue, 17 Mar 2009, Ingo Molnar wrote:
>
> Cool. Will you apply it yourself (in the merge window) or should
> we pick it up?
I'll commit it. I already split it into two commits - one for the trivial
startup problem that John had, one for the "estimate error and exit when
smaller than 500ppm" part.
> Incidentally, yesterday i wrote a PIT auto-calibration routine
> (see WIP patch below).
>
> The core idea is to use _all_ thousands of measurement points
> (not just two) to calculate the frequency ratio, with a built-in
> noise detector which drops out of the loop if the observed noise
> goes below ~10 ppm.
I suspect that reaching 10 ppm is going to take too long in general.
Considering that I found a machine where reaching 500ppm took 16ms,
getting to 10ppm would take almost a second. That's a long time at bootup,
considering that people want the whole boot to take about that time ;)
I also do think it's a bit unnecessarily complicated. We really only care
about the end points - obviously we can end up being unlucky and get a
very noisy end-point due to something like SMI or virtualization, but if
that happens, we're really just better off failing quickly instead, and
we'll go on to the slower calibration routines.
On real hardware without SMI or virtualization overhead, the delays
_should_ be very stable. On my main machine, for example, the PIT read
really seems very stable at about 2.5us (which matches the expectation
that one 'inb' should take roughly one microsecond pretty closely). So
that should be the default case, and the case that the fast calibration is
designed for.
For the other cases, we really can just exit and do something else.
> It's WIP because it's not working yet (or at all?): i couldnt
> get the statistical model right - it's too noisy at 1000-2000
> ppm and the frequency result is off by 5000 ppm.
I suspect your measurement overhead is getting noticeable. You do all
those divides, but even more so, you do all those traces. Also, it looks
like you do purely local pairwise analysis at subsequent PIT modelling
points, which can't work - you need to average over a long time to
stabilize it.
So you _can_ do something like what you do, but you'd need to find a
low-noise start and end point, and do analysis over that longer range
instead of trying to do it over individual cases.
> I also like yours more because it's simpler.
In fact, it's much simpler than what we used to do. No real assumptions
about how quickly we can read the PIT, no need for magic values ("we can
distinguish a slow virtual environment from real hardware by the fact that
we can do at least 50 PIT reads in one cycle"), no nothing. Just a simple
"is it below 500ppm yet?".
(Well, technically, it compares to 1 in 2048 rather than 500 in a million,
since that is much cheaper, so it's really looking for "better than
488ppm")
Linus
next prev parent reply other threads:[~2009-03-17 16:00 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-23 4:31 Linus Torvalds
2009-02-23 14:07 ` Linux 2.6.29-rc6 - Fix oops in i915_gem_retire_requests Karsten Wiese
2009-02-26 11:15 ` Linux 2.6.29-rc6 Jesper Krogh
2009-02-26 17:17 ` MTD_CK804XROM warning (Was: Linux 2.6.29-rc6) Marcin Slusarz
2009-02-26 17:53 ` Linux 2.6.29-rc6 Linus Torvalds
2009-02-26 19:22 ` David Woodhouse
2009-02-26 19:31 ` Jesper Krogh
2009-02-26 19:36 ` David Woodhouse
2009-02-26 19:46 ` Jesper Krogh
2009-02-26 19:49 ` David Woodhouse
2009-02-26 20:53 ` Carl-Daniel Hailfinger
2009-02-26 20:32 ` Linus Torvalds
2009-02-26 19:55 ` Jesper Krogh
2009-02-26 20:33 ` Linus Torvalds
2009-02-26 20:43 ` Jesper Krogh
2009-02-26 21:19 ` john stultz
2009-02-26 21:35 ` Jesper Krogh
2009-02-26 21:46 ` john stultz
2009-02-26 21:54 ` Thomas Gleixner
2009-02-26 22:04 ` Jesper Krogh
2009-02-27 6:30 ` Jesper Krogh
2009-03-01 13:51 ` Jesper Krogh
2009-02-26 21:49 ` Linus Torvalds
2009-03-01 15:04 ` Jesper Krogh
2009-02-26 21:54 ` john stultz
2009-02-26 22:06 ` Thomas Gleixner
2009-02-26 22:24 ` Linus Torvalds
2009-02-26 22:31 ` Linus Torvalds
2009-02-26 22:31 ` john stultz
2009-02-26 22:40 ` Linus Torvalds
2009-02-26 22:59 ` john stultz
2009-02-27 7:33 ` Ingo Molnar
2009-02-27 20:50 ` john stultz
2009-02-27 6:47 ` Jesper Krogh
2009-02-27 20:35 ` john stultz
2009-03-01 20:13 ` Jesper Krogh
2009-03-02 9:53 ` Jesper Krogh
2009-03-02 21:27 ` john stultz
2009-03-03 6:04 ` Jesper Krogh
2009-03-03 19:53 ` john stultz
2009-03-03 20:19 ` Jesper Krogh
2009-03-03 22:22 ` john stultz
2009-03-04 15:30 ` Jesper Krogh
2009-03-04 18:36 ` Jesper Krogh
2009-03-04 18:57 ` John Stultz
2009-03-05 2:39 ` john stultz
2009-03-05 2:52 ` john stultz
2009-03-05 8:43 ` Ingo Molnar
2009-03-06 3:13 ` john stultz
2009-03-06 3:54 ` john stultz
2009-03-06 11:34 ` Ingo Molnar
2009-03-09 20:42 ` Jesper Krogh
2009-03-10 4:26 ` Linus Torvalds
2009-03-10 11:29 ` Thomas Gleixner
2009-03-10 19:42 ` Jesper Krogh
2009-03-10 22:22 ` Thomas Gleixner
2009-03-15 19:53 ` Jesper Krogh
2009-03-16 18:40 ` Jesper Krogh
2009-03-15 1:19 ` Linus Torvalds
2009-03-15 15:44 ` Jesper Krogh
2009-03-15 18:09 ` Linus Torvalds
2009-03-15 18:38 ` Jesper Krogh
2009-03-15 19:02 ` Linus Torvalds
2009-03-15 19:52 ` Jesper Krogh
2009-03-16 18:59 ` Jesper Krogh
2009-03-16 19:32 ` Linus Torvalds
2009-03-17 1:43 ` john stultz
2009-03-17 8:14 ` Ingo Molnar
2009-03-17 15:48 ` Linus Torvalds [this message]
2009-03-17 16:13 ` Ingo Molnar
2009-03-17 16:28 ` Linus Torvalds
2009-03-17 16:40 ` Ingo Molnar
2009-03-17 17:28 ` Olivier Galibert
2009-03-21 9:11 ` Jesper Krogh
2009-03-21 10:06 ` Ingo Molnar
2009-03-15 20:32 ` Linus Torvalds
2009-03-03 20:39 ` Jesper Krogh
2009-03-03 22:16 ` john stultz
2009-03-04 5:36 ` Jesper Krogh
2009-03-01 15:09 ` Jesper Krogh
2009-03-01 15:44 ` Linux 2.6.29-rc6 (clocksource) Sitsofe Wheeler
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=alpine.LFD.2.00.0903170831020.3082@localhost.localdomain \
--to=torvalds@linux-foundation.org \
--cc=a.p.zijlstra@chello.nl \
--cc=jesper@krogh.cc \
--cc=johnstul@us.ibm.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--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
Powered by JetHome