[ntp:questions] ntp-4.2.6p5 on Win 7 x64
david at ex.djwhome.demon.invalid
Fri Jul 25 09:43:50 UTC 2014
On 24/07/14 23:43, David Woolley wrote:
> On 24/07/14 23:24, William Unruh wrote:
>> The correction is to change the frequency so that a fraction of the
>> current offset will be eliminated by the next correction. Not sure what
>> you mean by your comments on reducing increments.
> As far as I remember, ntpd is a PI controller. The proportional bit is
> done by applying a decaying fraction of the offset (more or less
> directly if using Linux user space mode, a bit more complex if you can
> only control frequency, as on Windows).
> It is just possible it stopped doing this between v3 and v4.
Here is edited code from 4.2.7p333. I have edited it to remove code for
the kernel discipline (where the actual work is in the kernel) and some
clamping of values to range. Note the comment about Windows says that
adjustments are made every second.
offset_adj = clock_offset / (CLOCK_PLL * ULOGTOD(sys_poll));
freq_adj = drift_comp;
clock_offset -= offset_adj;
* Windows port adj_systime() must be called each second,
* even if the argument is zero, to ease emulation of
* adjtime() using Windows' slew API which controls the rate
* but does not automatically stop slewing when an offset
* has decayed to zero.
adj_systime(offset_adj + freq_adj);
More information about the questions