From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Ian Campbell <Ian.Campbell@eu.citrix.com>,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] [PVOPS] dom0 sync xen wallclock
Date: Thu, 18 Feb 2010 15:43:38 -0800 [thread overview]
Message-ID: <4B7DD0AA.3050404@goop.org> (raw)
In-Reply-To: <alpine.DEB.2.00.1002111112360.26970@kaball-desktop>
On 02/11/2010 03:24 AM, Stefano Stabellini wrote:
> On Wed, 10 Feb 2010, Jeremy Fitzhardinge wrote:
>
>> I'm not sure this is the right thing to do. We have a set_wallclock
>> pvop, which Xen currently implements as a no-op, but it should do the
>> appropriate hypercall to set Xen's time if privileged enough.
>>
>> Conceptually the Xen persistent time is the same as the platform CMOS
>> clock, so I don't think we should update it any differently. Your patch
>> may make sense, but it should also address the native case. At the
>> moment it happens via sync_cmos_clock(), which is called periodically (I
>> think) independently of whether the clock has actually been changed.
>>
>> There is one big difference between the Xen clock and the CMOS clock,
>> which is that the Xen clock is being concurrently accessed by other
>> domains. If it is being updated periodically, then there will be
>> discontinuities in time which may affect other domains. But since
>> there's no time-warp ABI to Xen, I don't think this can really be
>> avoided; anyone reading periodically the Xen clock needs to be able to
>> deal with any discontinuities. pvops kernels only inspect it at boot
>> time, and so won't see any subsequent time adjustments anyway.
>>
>>
> Linux 2.6.18 does consider xen persistent time as the platform
> CMOS clock, but I don't think this is what we actually want: if we run
> ntpd in dom0 we probably want to sync xen time with dom0 time more often
> than linux usually update the CMOS clock.
> In particular we want that as soon as ntpd in dom0 set the right time,
> it gets propagated in xen so that all the PV guests created after that
> moment can read the right wallclock at boot.
>
If you're making the assumption that a guest will query the Xen
wallclock time precisely once, then I guess that will work OK. But if
you expect them to query it more than once, then you need to add a
notion of drift correction to Xen's system clock so that you can warp it
in a continuous fashion. But that complicates things because dom0
itself is using the Xen system clock as its own timebase which it is
also applying drift correction to. So to make that work you either need
to introduce distinct notions of corrected and uncorrected Xen clocks
and make domains query them appropriately, or more deeply PV time in the
domains so they directly use/adjust the Xen drift factor rather than
maintaining their own.
> I think that the right approach to achieve that is to break the
> assumption that xen persistent time is like the CMOS and treat it more
> like xtime instead.
>
I don't really see why wallclock time is any of Xen's business. It
seems like something that could be completely dropped with no loss of
functionality. It's somewhat useful for domains to be able to fetch an
approximately correct wallclock time early in boot, but aside from that
its fairly useless.
I would prefer to see:
* dom0 gets time of day from CMOS or whatever hardware mechanism it
wants
* PV domUs get a rough time of day at boot either from a simple
"seconds since 1970" in the startup info put there by the domain
builder from dom0's clock (so there's no illusion that it is
anything other than a one-time start time for the domain)
* HVM domains similarly get an emulated CMOS implemented in qemu
* anyone who wants continuously tracked accurate time needs to run ntp
and deprecate any notion of wallclock time from Xen.
J
next prev parent reply other threads:[~2010-02-18 23:43 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-09 18:12 [PATCH] [PVOPS] dom0 sync xen wallclock Stefano Stabellini
2010-02-09 18:20 ` Stefano Stabellini
2010-02-10 23:09 ` Jeremy Fitzhardinge
2010-02-11 0:06 ` Keir Fraser
2010-02-11 0:47 ` Jeremy Fitzhardinge
2010-02-11 8:03 ` Keir Fraser
2010-02-11 19:16 ` Jeremy Fitzhardinge
2010-02-11 11:24 ` Stefano Stabellini
2010-02-11 11:36 ` Ian Campbell
2010-02-18 23:43 ` Jeremy Fitzhardinge [this message]
2010-02-19 1:02 ` Dan Magenheimer
2010-02-19 9:10 ` Ian Campbell
2010-02-19 9:39 ` Keir Fraser
2010-02-23 12:13 ` Stefano Stabellini
2010-02-23 14:25 ` Ian Campbell
2010-02-19 23:05 ` Jeremy Fitzhardinge
2010-02-23 14:25 ` Ian Campbell
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=4B7DD0AA.3050404@goop.org \
--to=jeremy@goop.org \
--cc=Ian.Campbell@eu.citrix.com \
--cc=stefano.stabellini@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.