A number of our Windows workstations, running ntpd, simply cannot keep time. Our Linux workstations and servers running the same ntpd config don't have this problem, they can stay within +/- 5ms of skew. The Windows hosts easily drift to seconds and sometimes minutes apart. This is a problem for us.
The only common factor we have been able to isolate is that the hosts that can't keep time are running Windows.
Is there something impossible about what we're trying to do?
EDIT: yes, the Windows workstations are joined to a domain, but ntpd is not synchronizing time against the DCs (the DCs are synchronizing just fine against our ntp sources, FWIW)
EDIT: yes, we do need millisecond accuracy
EDIT: yes, the Windows Time service (W32Time?) is disabled
EDIT: we're running the ntp.org Windows ntpd
here is the official answer
http://support.microsoft.com/kb/939322
It is worth noting that if you are using the Windows system clock to gauge time, its resolution is typically limited to 10 or 15 milliseconds (i.e. it only updates once every 10 or 15 milliseconds) in most cases.
I can't say for certain, but it sounds like the Windows NTP daemon is horribly broken (at least in your case). Have you tried disabling it and running a third-party NTP daemon?
±5ms is a pretty tight tolerance IMHO (though I'm not doing anything time-critical so I'm happy if my clocks are on the same second), but NTP should easiy be able to keep you within a second if everything is working correctly. The only exception would be if your local clock is horribly broken (and by that I mean wild swings and almost NO frequency stability -- Modern NTP daemons are very good at adjusting for some sloppiness in the local clock).
If you have a domain, the workstations should pull time from the Domain controllers. So if you have the domain controllers setup to a reliable Internet clock source (http://www.pool.ntp.org/) then the clients should stay in time.
To get your domain controllers setup for a external Internet clock, check out: http://support.microsoft.com/kb/816042 and skip down to the section on "Configuring the Windows Time service to use an external time source"
For client machines use Group Policy to adjust how often your clients check the domain for time: Computer Configuration: Administrative Templates:System:Windows Time Service:Global Configuration Settings -> Update Interval (in seconds).
Hope this was helpful. Good Luck!
This works correctly out of the box, unless you break it. The domain members use the Windows Time Service to sync against the PDC Emulator FSMO role-holder, which you want syncing against an external NTP source.
If you disabled the way it works, and time is skewing, then you did something wrong. You can fix it with your tools, or you can use the things the system provides to you.
.edit - whoops. I misread your question as +/- 5 minutes, not milliseconds. My apologies. If you were seeing more than 5-minute skew, then you were doing it wrong. If you need under 5 millisecond sync, then yeah, you'll need third-party software and I don't know what kind of tweaking it will require.
Yes. It can. My company wrote software that will synchronize clocks more accurate than that. Sadly I can't open source it. If it is a 32bit windows box, than you can use Automachron for this, and I can confirm it works.