All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Dan Magenheimer <dan.magenheimer@oracle.com>,
	"Xen-Devel (E-mail)" <xen-devel@lists.xensource.com>,
	Keir Fraser <keir.fraser@eu.citrix.com>
Subject: Re: write_tsc in a PV domain?
Date: Thu, 27 Aug 2009 12:10:45 -0700	[thread overview]
Message-ID: <4A96DA35.2020109@goop.org> (raw)
In-Reply-To: <20090827094817.0b398bbe@lxorguk.ukuu.org.uk>

On 08/27/09 01:48, Alan Cox wrote:
>> as part of its ABI.  It is not a general tsc.  You can't meaningfully
>> execute "rdtsc" without also being (indirectly) aware of what pcpu its
>> running on and applying the appropriate corrections to turn it into
>> system monotonic time.  Executing rdtsc willy-nilly gets you useless
>> results; fortunately no PV Xen kernel does that.
>>     
> Actually for user space this isn't at all true. You can use rdtsc
> directly and sample the data for things like profiling then correct for
> things like spikes and skews from processor switches by filtering.
>   

If an app is sophisticated to do this correctly then it doesn't need any
special assistance from a hypervisor to make the tsc well-behaved.  It
should continue to work even in a Xen guest where both the process can
skip between VCPUs and the VCPUs can skip between PCPUs.

>> No, write_tsc is meaningless, and anyone trying to execute it is not
>> even wrong.
>>     
> Writing to the tsc is perfectly reasonable providing the tsc is an
> advertised feature. Being able to use the tsc becomes much more relevant
> with newer processors which have sane tsc implementations in the
> architecture however.
>   

Apparently on some large servers the tsc is only synced and sane within
a NUMA node, and not globally across all processors, so any app which
assumed sane tsc behaviour would break when the hardware gets scaled up.

But in this case I'm talking specifically about a Xen PV guest, where
the tsc is claimed for use by the Xen clocksource ABI.

> Unfortunately if you hide the tsc and hide the tsc flag in the cpu info
> lots of stuff doesn't run due to crap coding 8(
>   

And you can't actually hide the TSC flag in cpuid without virtualization
extensions.

    J

  reply	other threads:[~2009-08-27 19:10 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-25 21:54 write_tsc in a PV domain? Dan Magenheimer
2009-08-25 22:28 ` Jeremy Fitzhardinge
2009-08-25 23:09   ` Dan Magenheimer
2009-08-26  6:23     ` Keir Fraser
2009-08-26 15:42       ` Dan Magenheimer
2009-08-26 15:58         ` Keir Fraser
2009-08-26 19:45         ` Jeremy Fitzhardinge
2009-08-26 20:23           ` Dan Magenheimer
2009-08-26 22:30             ` Jeremy Fitzhardinge
2009-08-26 23:10               ` Dan Magenheimer
2009-08-27  8:39                 ` Chris Lalancette
2009-08-27 13:00                   ` Dan Magenheimer
2009-08-27 13:17                     ` Chris Lalancette
2009-08-27  8:48               ` Alan Cox
2009-08-27 19:10                 ` Jeremy Fitzhardinge [this message]
2009-08-28  3:29                   ` Dan Magenheimer
2009-08-28  9:49                     ` Alan Cox
2009-08-28 15:16                       ` Dan Magenheimer
2009-08-28 15:30                         ` Alan Cox
2009-08-28 17:49                           ` rdtsc: correctness vs performance on Xen (and KVM?) Dan Magenheimer
2009-08-31 23:52                             ` Dan Magenheimer
2009-09-01  0:22                               ` Jeremy Fitzhardinge
2009-09-01 13:54                                 ` Dan Magenheimer
2009-09-01 14:34                                   ` Keir Fraser
2009-09-01 14:53                                     ` Dan Magenheimer
2009-09-01 15:08                                       ` Keir Fraser
2009-09-01 15:26                                         ` Dan Magenheimer
2009-09-01 15:32                                           ` Jan Beulich
2009-09-01 15:56                                             ` Dan Magenheimer
2009-09-01 16:04                                               ` Jan Beulich
2009-09-01 16:41                                                 ` Dan Magenheimer
2009-09-02  7:05                                                   ` Jan Beulich
2009-09-01 21:25                                                 ` Keir Fraser
2009-09-01 22:08                                                   ` Dan Magenheimer
2009-09-01 22:21                                                     ` Jeremy Fitzhardinge
2009-09-01 22:41                                                       ` Dan Magenheimer
2009-09-01 23:26                                                         ` Jeremy Fitzhardinge
2009-09-02  7:20                                                           ` Keir Fraser
2009-09-02 21:44                                                             ` Jeremy Fitzhardinge
2009-09-02 21:50                                                               ` Keir Fraser
2009-09-02 22:05                                                                 ` Jeremy Fitzhardinge
2009-09-03  8:23                                                                   ` Jan Beulich
2009-09-03 17:29                                                                     ` Jeremy Fitzhardinge
2009-09-04  7:19                                                                       ` Jan Beulich
2009-09-04 15:44                                                                         ` Jeremy Fitzhardinge
2009-09-03 14:22                                                                   ` Dan Magenheimer
2009-09-02  7:16                                                     ` Jan Beulich
2009-09-02  7:01                                                   ` Jan Beulich
2009-09-01 16:06                                               ` Keir Fraser
2009-09-01 16:55                                                 ` Dan Magenheimer
2009-09-01 15:43                                           ` Keir Fraser
2009-08-28 17:49                           ` write_tsc in a PV domain? Dan Magenheimer
2009-08-28 17:02                     ` Jeremy Fitzhardinge
2009-08-28 17:49                       ` Dan Magenheimer
2009-08-28 23:01                         ` Jeremy Fitzhardinge
2009-08-29 17:51                           ` Dan Magenheimer
2009-08-31 18:11                             ` Dan Magenheimer
2009-08-31 19:06                               ` Keir Fraser
2009-08-31 21:06                                 ` Dan Magenheimer
2009-09-01  7:16                                   ` Keir Fraser
2009-08-31 19:18                               ` Jeremy Fitzhardinge

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=4A96DA35.2020109@goop.org \
    --to=jeremy@goop.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=dan.magenheimer@oracle.com \
    --cc=keir.fraser@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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.