From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Keir Fraser <keir.fraser@eu.citrix.com>
Cc: Dan Magenheimer <dan.magenheimer@oracle.com>,
"Xen-Devel (E-mail)" <xen-devel@lists.xensource.com>,
Jan Beulich <JBeulich@novell.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: RE: rdtsc: correctness vs performance on Xen (and KVM?)
Date: Wed, 02 Sep 2009 15:05:49 -0700 [thread overview]
Message-ID: <4A9EEC3D.4070402@goop.org> (raw)
In-Reply-To: <C6C4A72F.13BDD%keir.fraser@eu.citrix.com>
On 09/02/09 14:50, Keir Fraser wrote:
>> Yes. Perhaps the very simplest way would be to make the kernel update
>> the pvclock version counter on context switch, the same way Xen does;
>> that would allow the usermode vsyscall code to use exactly the same
>> algorithm as the kernel code. Would Xen cope with that?
>>
> Yes, that's basically how I would envision it working. The main missing
> detail afaics is how to manage and access the required per-thread data.
>
I was imagining:
1. Add a hypercall to set the desired location of the clock
correction info rather than putting it in the shared-info area
(akin to vcpu placement). KVM already has this; they write the
address to a magic MSR.
2. Pack all the clock structures into a single page, indexed by vcpu
number
3. Map that RO into userspace via fixmap, like the vsyscall page itself
4. Use the lsl trick to get the current vcpu to index into the array,
then compute a time value using tsc with corrections; iterate if
version stamp changes under our feet.
5. On context switch, the kernel would increment the version of the
*old* vcpu clock structure, so that when the usermode code
re-checks the version at the end of its time calculation, it can
tell that it has a stale vcpu and it needs to iterate with a new
vcpu+clock structure
J
next prev parent reply other threads:[~2009-09-02 22:05 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
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 [this message]
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=4A9EEC3D.4070402@goop.org \
--to=jeremy@goop.org \
--cc=JBeulich@novell.com \
--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.