Recently there was an internal discussion with several qemu developers about default VM clock/timer configuration. What they recommended maps to this libvirt XML:
<clock ...>
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
</clock>
This maps to the qemu command line options:
-rtc driftfix=slew -no-hpet -no-kvm-pit-reinjection
Explicitly this was recommended for all guest OS. Some bits don't affect certain OS, but in those cases they are harmless.
vdsm is currently only using:
<timer name="rtc" tickpolicy="catchup">
So it's missing two of those recommended bits.
Cole, thanks for this call from the past. Vdsm used to pass -no-kvm-pit-reinjection for Linux guests but this was not carried over properly when I re-implemented it to use libvirt as a middleman. We also enabled a hackish time-drift-fix. IIRC, there where commonly not enough hpets on a host for all VMs, so hpet was not really useful anyway.
Do you have a more lucid reference on why this is the favorable combination? Ronen, maybe you can assist?
BTW, Engine still has
if (OsRepositoryImpl.INSTANCE.isLinux(vm.getVmOsId())) {
createInfo.put(VdsProperties.PitReinjection, "false");
}
which should be dropped if nowadays -no-kvm-pit-reinjection is best for all guests.
Comment 10Francesco Romani
2014-07-31 13:20:33 UTC
This is an internal change, the guest OS should'nt notice anything except increased stability during the normal operation.
I guess the best, maybe only, way to test this is to look at the domain XML
of the VMs.
Recently there was an internal discussion with several qemu developers about default VM clock/timer configuration. What they recommended maps to this libvirt XML: <clock ...> <timer name="rtc" tickpolicy="catchup"/> <timer name="pit" tickpolicy="delay"/> <timer name="hpet" present="no"/> </clock> This maps to the qemu command line options: -rtc driftfix=slew -no-hpet -no-kvm-pit-reinjection Explicitly this was recommended for all guest OS. Some bits don't affect certain OS, but in those cases they are harmless. vdsm is currently only using: <timer name="rtc" tickpolicy="catchup"> So it's missing two of those recommended bits.