From: Willy Tarreau <w@1wt.eu>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Arjan van de Ven <arjan@infradead.org>,
Alok Kataria <akataria@vmware.com>,
Thomas Gleixner <tglx@linutronix.de>,
Larry Finger <Larry.Finger@lwfinger.net>,
LKML <linux-kernel@vger.kernel.org>,
"Rafael J. Wysocki" <rjw@sisk.pl>, Michael Buesch <mb@bu3sch.de>,
Dan Hecht <dhecht@vmware.com>
Subject: Re: [PATCH] Fix TSC calibration issues
Date: Thu, 4 Sep 2008 06:25:42 +0200 [thread overview]
Message-ID: <20080904042542.GH19337@1wt.eu> (raw)
In-Reply-To: <alpine.LFD.1.10.0809032041130.3515@nehalem.linux-foundation.org>
On Wed, Sep 03, 2008 at 08:59:05PM -0700, Linus Torvalds wrote:
>
>
> On Wed, 3 Sep 2008, Arjan van de Ven wrote:
> >
> > but at some point, even doing things in parallel/asynchronous isn't
> > helping, "parallel shit is still shit" :)
>
> Well, the thing is, you can't call ti "shit" when the fact is that we
> don't have any other options than to wait.
>
> The only frequency we can trust on 99% of all machines is the PIT, and
> it's a very uncomfortable programming model due to all the history (it is
> one of the few truly 8-bit things left in a modern PC). The other options
> are just not reliably there, or are known to not have a stable frequency.
>
> So how would you suggest we do it? Lowering the wait to 5ms (times 5, so
> it's really 25ms, although we can probably stop early if the first
> iterations are very consistent) will work, but it _will_ reduce precision.
> And it's still real time.
>
> But we simply don't have alternatives. That 'shit' is originally from the
> company you work for, btw, and while it was good for its time, the
> replacement (HPET) was horribly misdesigned by the same company, and is
> deficient in many ways (not the least of which is the idiotic enumeration:
> another ACPI braindamage), and it often isn't even exposed.
>
> As a result, the PIT remains to this day the most reliable source of a
> reference timer. That includes even on really modern machines (ie the one
> I have from Intel that contains hardware not even released yet!).
15 years ago when I only knew DOS, I used the PIT a lot for precise
delay calculations. I can attest that it can be a very precise timer
for delays when you run busy loops. You even need very few ticks because
you detect the falling edge with a high accuracy. Basically, I would
do this :
pit1 = readpit();
while (readpit() == pit1);
t1 = rdtsc(); // precise beginning of tick 0
while (readpit() != pit1 - 5000);
t2 = rdtsc(); // precise beginning of tick 5000
(t2 - t1) will be exactly 5000 PIT ticks long, or 4.1904767 ms.
Additional sanity checks are needed of course, such as rollover
detection, and a max loop counter in case we boot on a machine
with a broken PIT.
If someone wants to test this, I'd be interested in the number of
ticks required to get a good accuracy, I bet that even with a few
hundred ones it's already precise by a few ppm (about the precision
of the input clock in fact).
Willy
next prev parent reply other threads:[~2008-09-04 4:27 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-31 22:54 Regression in 2.6.27 caused by commit bfc0f59 Larry Finger
2008-09-01 11:14 ` Thomas Gleixner
2008-09-01 15:37 ` Larry Finger
2008-09-01 17:49 ` Thomas Gleixner
2008-09-01 17:44 ` Larry Finger
2008-09-01 18:31 ` Thomas Gleixner
2008-09-01 19:10 ` Linus Torvalds
2008-09-01 20:07 ` Thomas Gleixner
2008-09-01 21:30 ` Thomas Gleixner
2008-09-01 22:02 ` Linus Torvalds
2008-09-01 22:33 ` Thomas Gleixner
2008-09-01 22:56 ` Linus Torvalds
2008-09-01 23:24 ` Thomas Gleixner
2008-09-02 6:37 ` Andi Kleen
2008-09-02 12:21 ` Thomas Gleixner
2008-09-01 22:16 ` Linus Torvalds
2008-09-01 23:16 ` Thomas Gleixner
2008-09-02 3:18 ` Linus Torvalds
2008-09-02 3:35 ` Linus Torvalds
2008-09-02 4:54 ` Larry Finger
2008-09-02 9:17 ` Alan Cox
2008-09-02 12:15 ` Thomas Gleixner
2008-09-02 15:09 ` Linus Torvalds
2008-09-02 18:14 ` Thomas Gleixner
2008-09-02 18:41 ` Alok Kataria
2008-09-02 21:16 ` Thomas Gleixner
2008-09-02 18:42 ` Linus Torvalds
2008-09-02 21:13 ` Thomas Gleixner
2008-09-02 22:21 ` Linus Torvalds
2008-09-02 23:10 ` Thomas Gleixner
2008-09-03 1:49 ` Linus Torvalds
2008-09-02 22:54 ` [PATCH] Fix TSC calibration issues Thomas Gleixner
2008-09-03 2:14 ` Linus Torvalds
2008-09-03 9:11 ` Thomas Gleixner
2008-09-04 1:14 ` Alok Kataria
2008-09-04 2:56 ` Linus Torvalds
2008-09-04 3:16 ` Arjan van de Ven
2008-09-04 3:59 ` Linus Torvalds
2008-09-04 4:10 ` Arjan van de Ven
2008-09-04 4:20 ` Linus Torvalds
2008-09-04 4:27 ` Arjan van de Ven
2008-09-04 4:25 ` Willy Tarreau [this message]
2008-09-04 4:53 ` Linus Torvalds
2008-09-04 5:09 ` Willy Tarreau
2008-09-04 1:18 ` [PATCH] Change warning message in TSC calibration Alok Kataria
2008-09-03 2:51 ` [PATCH] Fix TSC calibration issues Larry Finger
2008-09-03 4:00 ` Linus Torvalds
2008-09-03 4:34 ` Larry Finger
2008-09-05 13:45 ` Regression in 2.6.27 caused by commit bfc0f59 Mark Lord
2008-09-02 17:17 ` Bill Davidsen
2008-09-01 19:36 ` Larry Finger
2008-09-01 20:09 ` Thomas Gleixner
2008-09-01 20:23 ` Larry Finger
2008-09-01 20:45 ` Thomas Gleixner
2008-09-01 18:42 ` Linus Torvalds
2008-09-01 19:08 ` Thomas Gleixner
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=20080904042542.GH19337@1wt.eu \
--to=w@1wt.eu \
--cc=Larry.Finger@lwfinger.net \
--cc=akataria@vmware.com \
--cc=arjan@infradead.org \
--cc=dhecht@vmware.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mb@bu3sch.de \
--cc=rjw@sisk.pl \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 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.