RADclock and Virtualization
Hardware Assisted Virtualization
RADclock should be working on all virtualization platform that do not require
changes to the operating system. RADclock has been reported to work on QEMU,
Virtual Box, Parallels and Xen HVM.
Please contact us to report problems on these platforms or successful attempts on other platforms.
The performance of the RADclock may suffer from the extra latencies of the virtualization layer.
Starting with version 0.3.0, RADclock has a more complete support for Xen and para-virtualized systems and accurately keeps track of time over live migration of guests system from one physical host to another.
To enable live migration, save CPU and network resources and benefit from the lower noise of Dom0, the RADclock implements a clock dependent approach. In this approach, the RADclock daemon running on Dom0 actively tracks the drift of the physical oscillator and provides adjusted clock parameters to the RADclock instances running on each DomU.
In this configuration, only the "master RADclock" running on Dom0 sends and receives NTP packets over the network. All RADclock instances running on each virtual system "see" the same time.
See our OSDI 2010 paper "Virtualize everything but time" for more details on this approach as well as performance evaluation.
In a Feed-Forward approach, all operating systems running on a Xen hypervisor have to rely on the same "timecounter" or "clocksource" to enable the clock dependent mode.
System settings - Linux
For each OS, select the same clocksource, either xen or tsc. The TSC should not be emulated, which implies the system architecture provides a reliable TSC.
Select the clocksource at boot time or change it through sysfs and activate the clocksource passthrough mode.
echo "1" > /sys/devices/system/clocksource/clocksource0/passthrough_clocksource
System settings - FreeBSD
At the time of writing the use of FreeBSD on Xen is still highly experimental, and only the ixen timecounter has been tested with RADclock in this configuration.
sysctl kern.timecounter.hardware=ixen sysctl kern.timecounter.passthrough=1
Only one single OS running on the Xen hypervisor should have a RADclock instance
running as a xen-master. For better performance, Dom0 should host the
All other OS should have RADclok running as xen-slaves as described in the RADclock configuration file.
#----------------------------------------------------------------------------# # Virtual Machine Environment parameters # # # The role of the radclock in a virtual machine environment (if any). # It is usually better to give the master role to the radclock instance # running in the host system, and the slave roles to the radclock running # in the guest system. # Possible values are: # none : no virtual machine environment # xen-master : radclock creates time for all Xen systems # xen-slave : radclock gets its time from a Xen master virtual_machine_mode = none