By default, VirtualBox keeps all sources of time visible to the guest synchronized to a single time source, the monotonic host time. This reflects the assumptions of many guest operating systems, which expect all time sources to reflect "wall clock" time. In special circumstances it may be useful however to make the TSC (time stamp counter) in the guest reflect the time actually spent executing the guest.
This special TSC handling mode can be enabled on a per-VM basis, and for best results must be used only in combination with hardware virtualization. To enable this mode use the following command:
VBoxManage setextradata "VM name" "VBoxInternal/TM/TSCTiedToExecution" 1
To revert to the default TSC handling mode use:
VBoxManage setextradata "VM name" "VBoxInternal/TM/TSCTiedToExecution"
Note that if you use the special TSC handling mode with a guest operating system which is very strict about the consistency of time sources you may get a warning or error message about the timing inconsistency. It may also cause clocks to become unreliable with some guest operating systems depending on how they use the TSC.
For certain purposes it can be useful to accelerate or to slow down the (virtual) guest clock. This can be achieved as follows:
VBoxManage setextradata "VM name" "VBoxInternal/TM/WarpDrivePercentage" 200
The above example will double the speed of the guest clock while
VBoxManage setextradata "VM name" "VBoxInternal/TM/WarpDrivePercentage" 50
will halve the speed of the guest clock. Note that changing the rate of the virtual clock can confuse the guest and can even lead to abnormal guest behavior. For instance, a higher clock rate means shorter timeouts for virtual devices with the result that a slightly increased response time of a virtual device due to an increased host load can cause guest failures. Note further that any time synchronization mechanism will frequently try to resynchronize the guest clock with the reference clock (which is the host clock if the VirtualBox Guest Additions are active). Therefore any time synchronization should be disabled if the rate of the guest clock is changed as described above (see Section 9.14.3, “Tuning the Guest Additions time synchronization parameters”).
The VirtualBox Guest Additions ensure that the guest's system time is synchronized with the host time. There are several parameters which can be tuned. The parameters can be set for a specific VM using the following command:
VBoxManage guestproperty set "VM name" "/VirtualBox/GuestAdd/VBoxService/PARAMETER" VALUE
where PARAMETER
is one of the
following:
-
--timesync-interval
-
Specifies the interval at which to synchronize the time with the host. The default is 10000 ms (10 seconds).
-
--timesync-min-adjust
-
The minimum absolute drift value measured in milliseconds to make adjustments for. The default is 1000 ms on OS/2 and 100 ms elsewhere.
-
--timesync-latency-factor
-
The factor to multiply the time query latency with to calculate the dynamic minimum adjust time. The default is 8 times, that means in detail: Measure the time it takes to determine the host time (the guest has to contact the VM host service which may take some time), multiply this value by 8 and do an adjustment only if the time difference between host and guest is bigger than this value. Don't do any time adjustment otherwise.
-
--timesync-max-latency
-
The max host timer query latency to accept. The default is 250 ms.
-
--timesync-set-threshold
-
The absolute drift threshold, given as milliseconds where to start setting the time instead of trying to smoothly adjust it. The default is 20 minutes.
-
--timesync-set-start
-
Set the time when starting the time sync service.
-
--timesync-set-on-restore 0|1
-
Set the time after the VM was restored from a saved state when passing 1 as parameter (default). Disable by passing 0. In the latter case, the time will be adjusted smoothly which can take a long time.
All these parameters can be specified as command line parameters to VBoxService as well.
Once installed and started, the VirtualBox Guest Additions will try to synchronize the guest time with the host time. This can be prevented by forbidding the guest service from reading the host clock:
VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1