Posted by Chris Swingler, Last modified by on 20 September 2011 03:02 PM

Certain CPU-intensive applications (trading applications in particular) will cause "clock drift" on Windows systems. Severe enough clock drift will cause Windows to re-sync with the system's hardware clock (also know as RTC, or Real Time Clock). This can cause Windows to change the clock to UTC or GMT in virtualized environments.

"Clock Drift" in this context is defined as the clock going out of sync. This is caused by Windows using SNTP (Simplified Network Time Protocol) rather than a full NTP service; as well as Windows having a too-infrequent clock update cycle by default. There are two ways to alleviate this issue.

Correcting clock drift by installing a third-party NTP service

The most reliable manner to correct this issue is to use a third-party implementation of the NTP service to update the system's clock. We have been succesful at using the Meinberg NTP daemon port for Windows, which includes an easy-to-use installer. You can download it at the following link:

Download the installer to your computer, and double-click it to run the installer.

After downloading and running the installer, step through the default for each option, until you reach the "Configuration File Settings" screen. Here, choose the following:

Location of configuration file: Leave at default.

Create an initial configuration file with the following settings: Leave checked

Want to use predefined public NTP servers (see www.pool.ntp.org)? Choose Choose "United States of America"

You can specify up to 9 NTP servers (comma separated) you want to use: Leave blank.

Use fast initial sync mode (iburst) Leave checked.

Add local clock as a last resort reference Leave unchecked.

When prompted to review settings, click "No".

At the "Setting up NTP Service" screen, click "Next >"

At the "Enter the User ID and password used for running the service" screen, enter a secure password for an NTP account, and click "Next >"

Click Finish

This will replace the Windows W32Time service with the Meinberg NTP daemon. You can get up-to-date time statsitics by clicking Start > All Programs > Meinberg > Network Time Protocol > Quick NTP Status.

This will also automatically set the clock to update on a more frequent, and more accurate, basis.

Correcting clock drift by altering the W32Time service parameters in the Windows Registry

This will possibly help, but is not a recommended solution. Microsoft acknowledges that the Windows W32Time service is insufficient for any high-accuracy applications:

"We do not guarantee and we do not support the accuracy of the W32Time service between nodes on a network. The W32Time service is not a full-featured NTP solution that meets time-sensitive application needs. The W32Time service is primarily designed to do the following:

Make the Kerberos version 5 authentication protocol work.

Provide loose sync time for client computers.

The W32Time service cannot reliably maintain sync time to the range of 1 to 2 seconds. Such tolerances are outside the design specification of the W32Time service."

If you would like to make adjustments to the Windows Time Service regardless, follow the below steps:

Click "Start", then "Run...", and enter "gpedit.msc"

Navigate through the Local Group Policy Editor tree as follows: Local Computer Policy > Computer Configuration > Administrative Templates > System > Windows Time Service

Double-click on "Global Configuration Settings"

In the Global Configuration Settings window, click "Enabled" to enable the options pane.

Adjust the MinPollInterval and MaxPollInterval parameters to suit your needs. Note that this parameter is defined in log base-2; meaning that it will update according to the following formula: 2 ^ MinPollInterval. By default, this is 6, or 2 ^ 6 = 64 seconds. By default, Windows will update the clock somewhere between 64 and 1024 seconds.

Click Apply, then OK, and close the Local Group Policy Editor window.

If you have any questions, or experience further issues with clock drift on Windows systems, please contact support