Re: Clock not moving in virtual machine

From: Alexander Motin <mav_at_FreeBSD.org>
Date: Sat, 17 Jul 2010 00:20:47 +0300
Bruce Cran wrote:
> On Fri, Jul 16, 2010 at 11:47:23PM +0300, Alexander Motin wrote:
>> It is probably hard to see pattern due to to very high clock frequency.
>> But TSC timecounter is unreliable even on real SMP systems. What it
>> counts on virtual SMP - even bigger question. As system seems never uses
>> timecounters with negative quality - you've left with
>> kern.timecounter.hardware=dummy - that's why time is not going. As last
>> resort you may try to set sysctl kern.timecounter.hardware=TSC in run time.
> 
> I came across the same problem on rootbsd a few days ago, and set the TSC 
> as the timecounter in /etc/sysctl.conf - I've since found it should be 
> possible to also set kern.timecounter.smp_tsc=1 in /boot/loader.conf to let 
> the TSC be chosen. The system's now been running for a day and I've not had 
> any warnings about the clock going backward, and since the time has 
> remained correct I guess Xen synchronises with the host? 

I have no idea about TSC in XEN, but QEMU just passes TSC from the
physical CPU. So if host' TSCs are not synchronized - value may jump
accidentally when QEMU process migrates between CPUs.

> Should I still switch back to using the i8254? 

I would say it depends. i8254 frequency is always known, while TSC
depends on calibration. Calibration on virtual machine I think much
less precise then on physical. Same time, if i8254 also used as event
timer, timestamp calculation algorithm is not very trivial there and I
am not sure it is absolutely reliable. So I would probably used i8254 as
time counter and LAPIC+RTC as event timers.

-- 
Alexander Motin
Received on Fri Jul 16 2010 - 19:21:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:05 UTC