From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: Is there a way to get consistant time across different VMs? Date: Tue, 07 Sep 2010 18:10:56 +1000 Message-ID: <4C85F390.7070205@goop.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: walmart Cc: Dan Magenheimer , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On 09/07/2010 02:12 PM, walmart wrote: > Hi, all: > > I want to test some program, which requires a high precise time. (some > thing as rdtsc). > > I tested rdtsc on different VMs, they are not consistant. (I am using > Xen 4.0, Fedora 13, 64 bit). > > Is there a way to get consistant high precise time across different VMs? Hm, you're walking into a bit of a minefield. What are your precise requirements for: * accuracy * resolution * monotonicity * cross-cpu synchronization * cross-process synchronization ? In general rdtsc isn't very useful as a timesource, since there are many ways in which it can fail/do strange things from processor to processor and system to system, so "s[a]me thing as rdtsc" doesn't tell us much. However, in modern versions of Xen, you can turn on rdtsc emulation which makes rdtsc generate a guaranteed global monotonic time value at a nominal 1GHz rate (I think, or did that change to the starting CPU speed?). But the downside is that it results in a trap'n'emulate of the instruction which is a bit more expensive than a raw rdtsc. Or if you have a new Intel system with a really, truly nonstop synchronized tsc, you can use rdtsc directly. But if neither of those are acceptable/possible, you need to use the normal Xen system time, which has a 1ns resolution, is fairly precise, but not generally completely monotonic between cpus. It also isn't usable from usermode without some extra kernel patches. J