Host power management causes problems with guest timekeeping on Linux hosts (1591)
I have a Linux host with power management features that vary the processor speed. When the host processor speed changes, the guest clock runs too quickly or too slowly. Can I correct this?
This problem occurs because current VMware for Linux products do not have complete support for host power management features (such as Intel SpeedStep, or AMD PowerNow or Cool'n'Quiet) that vary the processor speed. This article gives one workaround that prevents guest clocks from running quickly and another that periodically corrects the time when guest clocks run slowly. Alternatively, for more accurate time, you can lock the host processor to a constant speed. For more information, see Locking SpeedStep, PowerNow, or Cool'n'Quiet on the Host to a Constant Speed (708) and System Clocks Running at a Slower Speed in the Guest Operating System (916).
To prevent guest clocks from running too quickly, specify the correct maximum host CPU speed in your global configuration file,
/etc/vmware/config . If this file exists, edit it with a text editor, adding the lines described below. The file may not exist. If it does not exist, create it as a plain text file.
The example presented here assumes that the host computer has a maximum speed of 1700MHz. The first line is the most important one. It should be your host computer's maximum speed in kHz -- that is, its speed in MHz times 1000, or its speed in GHz times 1000000. To find your actual host's maximum CPU speed, run
cat /proc/cpuinfo and look for the line
cpu MHz, which is your host's maximum CPU speed. Add these lines to your global configuration file:
host.cpukHz = 1700000
host.noTSC = TRUE
ptsc.noTSC = TRUE
To periodically correct the time (once per minute) when a guest clock runs slowly, VMware Tools must be installed in the guest. On the Options tab of VMware Tools in the guest, verify that Time synchronization between the virtual machine and the host operating system is selected.
- If the problem is still not corrected, this may be addressed by disabling power management altogether. This can be done by adding
apm=offto the boot entry of the host's
- If the problem is more widespread than just timekeeping and the virtual machine is simply running too slowly or quickly, and using
apm=offis not sufficient, add
acpi=off noapicto the boot entry of the host's
If the CPU of the host machine uses Intel SpeedStep, AMD Cool-N-Quiet, VIA Longhaul, or any other CPU speed throttling and power saving technology, the cat /proc/cpuinfo command displays the current speed at which the CPU is running and not the maximum CPU speed. To get the correct speed, you need to run this command:
If a limit has been configured for the CPU, use this command: