From: David Laight <David.Laight@ACULAB.COM>
To: "'H. Peter Anvin'" <hpa@zytor.com>,
'Thomas Gleixner' <tglx@linutronix.de>,
Muhammad Usama Anjum <usama.anjum@collabora.com>,
Jonathan Corbet <corbet@lwn.net>, Ingo Molnar <mingo@redhat.com>,
"Borislav Petkov" <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
<x86@kernel.org>,
"open list:DOCUMENTATION" <linux-doc@vger.kernel.org>,
open list <linux-kernel@vger.kernel.org>,
"Guilherme G. Piccoli" <gpiccoli@igalia.com>
Cc: Steven Noonan <steven@uplinklabs.net>,
"kernel@collabora.com" <kernel@collabora.com>
Subject: RE: Direct rdtsc call side-effect
Date: Tue, 6 Jun 2023 08:23:52 +0000 [thread overview]
Message-ID: <cabfcf8a8840410399d2bfc1202e77ce@AcuMS.aculab.com> (raw)
In-Reply-To: <4ea6e82c-4761-e0c9-3e75-8ec39eecb30a@zytor.com>
From: H. Peter Anvin
> Sent: 05 June 2023 17:32
...
> The TSC is certainly not perfect; partly because, ironically enough, it
> was introduced just *before* out of order and power management entered
> the x86 world.
Another issue is that the crystal used for the cpu clock won't be
that accurate (in terms of ppm error rate), and will have significant
temperature drift.
OTOH the crystal in the traditional x86 motherboard 'clock' chip
is (meant to be) designed to have long term accuracy.
While reading the TSC is a lot faster there ought to have been
some kind of PLL to continuously adjust the measured TSC frequency
to keep synchronised with the timer chip.
(Instead kernels end up writing the drifted TSC based time back to
the timer chip during shutdown.)
> It is no secret that it has been slow to catch up. It was easy to put a
> counter in; it is a *lot* harder to make it work in all the possible
> scenarios in the power-managed, out-of-order world.
That rather depends on what you mean by 'work' :-)
> It is one of my personal pet projects in the architecture work to push
> to get that last distance; we are not yet there.
For performance measurements possibly what you want is a simple
clock counter which is dependent on an a register.
So pretty much zero overhead but is guaranteed to happen after
some other instruction without really affecting the pipeline.
IIRC the x86 performance counters aren't dependent on anything
so they tend to execute much earlier than you want.
OTOH rdtsc is likely to be synchronising and affect what follows.
ISTR using rdtsc to wait for instructions to complete and then
the performance clock counter to see how long it took.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
next prev parent reply other threads:[~2023-06-06 8:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-01 8:45 Direct rdtsc call side-effect Muhammad Usama Anjum
2023-06-01 8:56 ` Peter Zijlstra
2023-06-01 8:58 ` Peter Zijlstra
2023-06-01 10:31 ` Thomas Gleixner
2023-06-01 10:26 ` Thomas Gleixner
2023-06-01 18:20 ` Thomas Gleixner
2023-06-01 19:07 ` Steven Noonan
2023-06-01 19:31 ` H. Peter Anvin
2023-06-01 20:10 ` Thomas Gleixner
2023-06-01 20:13 ` Thomas Gleixner
2023-06-01 20:31 ` Peter Zijlstra
2023-06-01 21:41 ` Steven Noonan
2023-06-02 6:45 ` Peter Zijlstra
2023-06-05 10:27 ` David Laight
2023-06-05 14:43 ` Thomas Gleixner
2023-06-05 15:54 ` David Laight
2023-06-05 16:32 ` H. Peter Anvin
2023-06-06 8:23 ` David Laight [this message]
2023-06-09 0:14 ` H. Peter Anvin
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=cabfcf8a8840410399d2bfc1202e77ce@AcuMS.aculab.com \
--to=david.laight@aculab.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=gpiccoli@igalia.com \
--cc=hpa@zytor.com \
--cc=kernel@collabora.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=steven@uplinklabs.net \
--cc=tglx@linutronix.de \
--cc=usama.anjum@collabora.com \
--cc=x86@kernel.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).