KenK said:
Is the source of the clock time in the task bar in XP Home accurate? Like
WWV maybe?
TIA
Well, first you check your "Date and Time" properties,
and see whether you're pointed at an actual, working,
time source. Mine is set to time.windows.com right now.
My modem/router, points to 2.pool.ntp.org , which is a
load balanced pool of hundreds of NTP time servers. By pooling
resources, no one server owner is plagued with time stamping
all the computers on Earth. The bandwidth used, is actually
an issue for those owners. The more servers in the pool, the
less each server owner is paying as a "donation".
*******
You can turn on logging, but the log file is "filled with crap".
I've extracted a few lines, that gives me some idea it is running.
"How to turn on debug logging in the Windows Time Service"
http://support.microsoft.com/kb/816043
C:\WINDOWS\Temp\w32time.log
150608 21:35:00.7031250s - Polling peer time.windows.com
150608 21:35:00.7031250s - Sending packet to time.windows.com
....
150608 21:35:00.7812500s - LocalClockOffset: 0:00.486668500s
So far, nothing stands out in that file, to suggest Windows
uses a "linear dribble" correction model.
A third-party NTP client, may actually have better internal
modeling than the Windows one. But that's only for purists,
and for people lucky enough to not have any hardware issues.
(Hardware issues can swamp even the best software...)
*******
Your computer has more than one clock.
When the computer is off, the RTC in the Southbridge keeps time.
The RTC uses a 32768Hz watch crystal, and the crystal can be
located near the Southbridge. But the communications path to
that hardware, is extremely poor, and so it is not practical
to look up the time from that time piece on a regular basis
(like, once a second).
When the OS boots, RTC time is copied to a software clock service.
The software clock counts "clock tick interrupts". The clock tick
interrupts, in turn, are traceable to the clockgen chip and the
crystal located next to it. So the "drift" of your system, is
determined by more than one crystal. While the clockgen also
contributes a reference clock to the CPU itself (for the CPU PLL),
we don't even want to discuss how that works (SpeedStep, ugh!).
Counting clock tick interrupts, avoids worrying about whether
the CPU is running 2GHz or 3GHz right now. There are actually
other time pieces inside the computer, beside counting clock ticks,
and they all have to be synchronized, somehow.
A good NTP implementation, uses linear drift compensation. Meaning,
if the RTC or Clockgen loses 50ppm per day, the software clock
can "dribble out" small corrections to the clock, on a more frequent
basis. But linear modeling doesn't even come close to real-world
behavior. (Drift could be temperature sensitive, room temp changes...)
If clock tick interrupts ever get lost, due to some high priority
activity taking longer than a clock tick, then the clock will
randomly drift in one direction. NTP cannot really compensate for
that, very readily. You can never turn up the NTP correction rate
high enough, to take care of every problem type.
Owners of motherboards with Nforce2 chipset, they had a problem
with time that was so bad, that no NTP method could keep up with
the random drift. It was short term random, meaning the on-screen
(analog-looking) clock, couldn't even time 60 second periods without
huge errors. There was some kind of bug in the interrupt logic
of the motherboard, and one trigger condition, was a non-canonical
adjustment of hardware clock (like, setting your DDR333 DIMM to
run at DDR320, that sort of thing). No NTP algorithm, can
successfully correct for short term random +/- type events.
And that clock could be off by seconds per minute, gaining
one minute, losing the next. Returning hardware timing clocks
to nominal (run DDR333 DIMM at DDR333 rate), would cure the
problem for some, but I think there were still a few victims,
where nothing worked for them. I had one of those motherboards,
but didn't have a bit of trouble with mine. Go figure.
*******
The best-written articles on time keeping, come from the software
developers who do VM software. Check the VMWare, VirtualBox sites
and the like, as they explain how PIT works, whether they use HPET,
that sort of thing. And they'll give some ideas, how OSes keep time.
The copying of the RTC to the software time service, is just
a small part of it.
Paul