(PeteCresswell) said:
Last several weeks, my XP box has been coming up with incorrect times -
usually less than current but not on even hour boundaries (i.e. there's
no time zone issue).
Just found it set to 18:50 when the actual time was 19:38.
Opened up "Date and Time Properties", clicked "Update Now"... waited....
and waited... and sure enough, it reported an error while trying to
synch with time.nist.gov.
Flipped over to time.windows.com, and got a successful synch.
I *think* I recall an opposite situation when it started:
time.windows.com was selected but time was wrong. Switched over to
time.nist.gov and it synched.
Three Questions:
- OK, synchs are failing... but why is my PC's clock
getting so far behind?
- I've never had a time synch issue before... ever.
Has something changed vis-a-vis time synching?
- Is there an optimal address for time synching?
1) You can enable logging (w32timellog). Don't expect the answer to
be sitting in here in plain English though. Betting on this,
is a false hope. A third-party time sync tool and associated
log, may work out better for you.
http://support.microsoft.com/kb/816043
2) Network time sources are occasionally mis-configured.
Even the "pool" type sources of time keeping, can have
rogue nodes (you're unlikely to be served by a rogue
node, twice in a row). I'm not betting on this being
the problem either.
3) When asleep, the 32KHz crystal on the motherboard, keeps
time like a digital clock. When the OS is running, a high priority
clock tick interrupt occurs many times a second, and is counted in
software. This is termed a "software clock". The interrupts generated,
are derived from a different crystal than the 32KHz one. This means
the drift on the two crystals, won't have exactly the same
characteristics. Again, this is likely noise. Especially if
you are using a good third-party time sync solution which
dribbles out time corrections regularly. The Windows one may
not work precisely that way.
4) Given (3), the issue becomes, what can interfere with a
"software clock" ? Windows doesn't probe the 32KHz BIOS
clock, but is relying on the software clock for timekeeping.
a) Missed clock tick interrupts. If interrupt level routines
have a longer runtime than the time between clock tick interrupts,
clock ticks get lost, and the software clock drifts in a
preferred direction. Normally, Windows runs at interrupt
level for as short a period as possible, scheduling the
rest of interrupt servicing as a DPC. The DPCLAT utility,
can be used to study DPC service latency, and determine by
side effect, whether something like BIOS SMM (System Management
Mode), is affecting the computer. Some Gigabyte motherboards
had slightly long SMM routines. And a BIOS update provided some
relief. Audio workstation owners typically look at DPCLAT (latency),
as audio recording can be affected by stuff like that. SMM is
used for things like some multi-phase VCore circuits, and
turning phases on and off on a whim.
(this leaves a service behind... if you're a neat freak,
you may want to remove it)
http://www.thesycon.de/deu/latency_check.shtml
Some SMM info.
http://en.wikipedia.org/wiki/System_Management_Mode
System Management Mode (BIOS code) is so powerful,
the OS doesn't know that it is happening. Seeing
spikes in DPCLAT, is a means to detect SMM activity
by the side effects on DPC service latency. If you see
a really long spike (many milliseconds), that might affect
a software clock and time keeping.
b) Hardware interrupt storms.
An Nforce2 chipset will suffer plus or minus drift,
large magnitude over a short time interval, if the
chipset is set to a non-canonical clock rate (over or
under clock). It is felt some chipset interrupt is
delivering bogus interrupts at a high rate, but nobody
analysed the problem that closely. No time sync solution
could fix this, because of the magnitude of the anomaly.
Plug-in cards can have interrupt storms. There was
one storage card, where 30% of chips had a bug like that.
Linux claims my RTL8169SC GbE NIC card is doing that too.
In this case, I would have expected the high priority
clock interrupt to not be affected. Windows has some
kind of protection against storms, but I don't know the
details. It won't give all CPU cycles to interrupts, and
limits them somehow.
So that's a bit of background on the hardware side.
Paul