16 VM Guest Clock Settings #
Keeping the correct time in a VM Guest is one of the more difficult aspects of virtualization. Keeping the correct time is especially important for network applications and is also a prerequisite to do a live migration of a VM Guest.
It is strongly recommended to ensure the VM Host Server keeps the correct time as well, for example, by using NTP (see Chapter 26, Time Synchronization with NTP for more information).
16.1 KVM: Using kvm_clock #
   KVM provides a paravirtualized clock which is supported via the
   kvm_clock driver. It is strongly recommended to use
   kvm_clock.
  
   Use the following command inside a VM Guest running Linux to check whether
   the driver kvm_clock has been loaded:
  
tux >sudodmesg | grep kvm-clock [ 0.000000] kvm-clock: cpu 0, msr 0:7d3a81, boot clock [ 0.000000] kvm-clock: cpu 0, msr 0:1206a81, primary cpu clock [ 0.012000] kvm-clock: cpu 1, msr 0:1306a81, secondary cpu clock [ 0.160082] Switching to clocksource kvm-clock
   To check which clock source is currently used, run the following command in
   the VM Guest. It should output kvm-clock:
  
tux > cat /sys/devices/system/clocksource/clocksource0/current_clocksourcekvm-clock and NTP
    When using kvm-clock, it is recommended to use NTP in
    the VM Guest, as well. Using NTP on the VM Host Server is also recommended.
   
16.1.1 Other Timekeeping Methods #
    The paravirtualized kvm-clock is currently not for
    Windows* operating systems. For Windows*, use the Windows Time
    Service Tools for time synchronization (see
    http://technet.microsoft.com/en-us/library/cc773263%28WS.10%29.aspx
    for more information).
   
16.2 Xen Virtual Machine Clock Settings #
   With Xen 4, the independent wallclock setting
   /proc/sys/xen/independent_wallclock used for time
   synchronization between Xen host and guest was removed. A new
   configuration option tsc_mode was introduced. It specifies
   a method of utilizing the timestamp counter to
   synchronize the guest time with the Xen server. Its default value '0'
   handles the vast majority of hardware and software environments.
  
   For more details on tsc_mode, see the
   xen-tscmode manual page (man 7
   xen-tscmode).