[ntp:questions] Time reset

David L. Mills mills at udel.edu
Tue May 6 03:40:55 UTC 2008


Evandro,

You will see the following message appearing in the archives about once 
per year. It may be time to repeat it again.

The major assumption in the NTP design is that the operating system 
determines whether to accept a backward step or not. The original 
nanokernel design now used in Linux, FreeBSD and Tru64 forced monotonic 
forwared progress, although at reduced rate, unless the backward step is 
more than two seconds. In that case the assumption is a stuck bit in the 
clock counter or some other serious hardware flaw. Occasions like this 
are not common, but they are not rare either. The most common case is 
when starting the daemon the RTC time is a second or more from NTP time.

Various generations of kernelmongers have cheerfully ignored that 
provision and substituted their own. The only thing NTP could do is to 
ignore a backard step and continue to ignore it forever, assuming the 
need to step back continures. You can of course tinker the step 
threshold larger than the default 128 ms, but you must accept that the 
time to complete a correction and assume applications are synchronized 
is 2000 s for every second of correction.

Some systems, including Linux, Solaris and IRIX, have replaced the 
original Unix adjtime() design with what they believe is a fast 
adjustemt algorithm. This introduces an extra pole in the transient 
response and results in large overcorrections and overshoot, especially 
with large corrections. The effect is that applications swing in and out 
of synchronization until the transients die down.

If the above constraints are not acceptable, I strongly advise you to 
avoid using NTP.

Dave

Evandro Menezes wrote:

> On another note, I wish that NTP had an option to disable backward
> jumps in time.  Is it something that has been considered before?
> 
> TIA




More information about the questions mailing list