[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] [RFC] Building guests on monotonic Xen system time
Well, really it's baked into the design of some of the timer modes that time can differ across VCPUs: it's their reason for existence. We could say we don't support them any more -- I'm not sure anyone enables them for productised releases of Xen -- but we should at least do that explicitly rather than subtly breaking them. What I'll do is append doing some more work to your patch to my work queue. I would say I'm moderately confident that your patch actually will work fine for the timer modes that you guys are using in your packaging of Xen, but I think some more architectural cleanup in this area would be good for xen-unstable. Whether that is remove some of the older timer modes now, or clean up hvm_[sg]et_guest_time() to work nicely with those modes, is open to debate. -- Keir On 22/5/08 17:05, "Dan Magenheimer" <dan.magenheimer@xxxxxxxxxx> wrote: > Thanks for the review and the modifications! > > It does allow time to temporarily deviate across VCPUs, but > doesn't allow them to "apparently" deviate; that is a VCPU > can never observe or set a time which is older than the time > that another VCPU previously observed or set. > > Unless you can guarantee this, there's no way to avoid "Time > going backwards" errors, is there? > > Admittedly, I don't fully understand the inner workings of > all the timer modes, but if this doesn't fly for one or more > of the modes, doesn't this mean it is impossible for those > timer modes to guarantee monotonicity -- at least without > also requiring gang scheduling? > > Thanks, > Dan > > P.S. I had left the naming as hvm_get_guest_time_mono() > because I wasn't sure there would never be a version > needed that was non-mono, so thought it would be better > to be explicit in the name. (I was especially sensitized > to this after having just completed teasing apart the > hvm_get_guest_tsc() from hvm_get_guest_time() ;-) > >> -----Original Message----- >> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx >> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx]On Behalf Of Keir Fraser >> Sent: Thursday, May 22, 2008 2:46 AM >> To: dan.magenheimer@xxxxxxxxxx; Xen-Devel (E-mail) >> Subject: Re: [Xen-devel] [PATCH] [RFC] Building guests on >> monotonic Xen >> system time >> >> >> Attached is a modified version (really just renames). However the new >> hvm_set_guest_time() interface doesn't work for vpt.c timer >> modes which >> allow progress of time to temporarily deviate across VCPUs. I >> guess you >> don't use those modes so might not notice this issue. I think >> hvm guest time >> handling may need to be integrated into vpt.c so that correct >> handling can >> be applied for the various different types of timer mode. >> Having a blanket >> per-domain stime offset and enforcing monotonicity regardless >> of timer mode >> doesn't fly. >> >> -- Keir >> >> On 21/5/08 20:01, "Dan Magenheimer" >> <dan.magenheimer@xxxxxxxxxx> wrote: >> >>> OK, I think this version is ready for prime-time. >>> >>> Keir, please check-in to unstable. >>> >>> [PATCH] Build hvm guest platform timers on monotonic Xen system time >>> >>> This patch moves hvm platform timers from underlying >> physical CPU TSC >>> to Xen system time and ensures monotonicity. TSC on many >> systems may >>> skew between processors, thus hvm platform timer reads were not >>> monotonic which led to "Time going backwards" problems. >>> >>> Signed-off-by: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx> >>> >>>> -----Original Message----- >>>> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx] >>>> Sent: Tuesday, May 20, 2008 1:37 AM >>>> To: dan.magenheimer@xxxxxxxxxx; Xen-Devel (E-mail) >>>> Subject: Re: [Xen-devel] [PATCH] [RFC] Building guests on >>>> monotonic Xen >>>> system time >>>> >>>> >>>> On 19/5/08 19:27, "Dan Magenheimer" >>>> <dan.magenheimer@xxxxxxxxxx> wrote: >>>> >>>>> Why? Scaling and adjusting of xen-time-based-tsc will >>>>> be very difficult to coordinate with processor-based-tsc. >>>>> We need to always ensure that A < B < C for a guest >>>>> executing: >>>>> >>>>> rdtsc(A) /* untrapped */ >>>>> emulated_rdtsc(B) >>>>> rdtsc(C) /* untrapped */ >>>>> >>>>> Further, OS's use TSC as a highest-resolution time source >>>>> with knowledge that TSCs on different processors may >>>>> not be synchronized, whereas they assume that a platform >>>>> timer is one-per-system and monotonically increasing. >>>>> >>>>> Keir, if you disagree and see guest-TSC-on-Xen-system-time >>>>> as an absolute must, please let me know. >>>> >>>> I am inclined to say we should have a >>>> guest-TSC-on-system-time mode where >>>> *all* RDTSC executions get trapped. This would at least be >> useful as a >>>> baseline for tracking down guest time problems, and also provide a >>>> guaranteed stable TSC timesource for those who care about >>>> that more than >>>> pure performance. >>>> >>>> *However* I would agree that, with TSC virtualisation as it >>>> currently is, >>>> there actually isn't really a way to build guest TSC on Xen >>>> system time >>>> without periodically warping the TSC back or forth. The guest >>>> TSC runs at >>>> the host TSC rate and that is that! >>>> >>>> I think my original point was that at least we should not >>>> build all our >>>> other virtual time sources on this dodgy 'guest TSC'. :-) >>>> >>>> -- Keir >>>> >>>> >>>> >> >> >> > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |