ntp 不想跳过你的时钟,因为不连续的时间跳跃是不好的。它想逐渐调整你的时钟——非常缓慢。这是非常保守的:默认情况下,它不会使您的时钟偏移超过百万分之 xx (ppm)。
但是由于 ntp 非常保守,如果它发现您的时钟太远,以至于逐渐调整它会花费很长时间,它无论如何都会回退并跳过您的时钟(即使那很糟糕)。默认情况下,如果逐渐调整时钟所需的时间超过 yy 小时,则会执行此操作。
如果您愿意,您可以告诉 ntp 更快地调整您的时钟(即逐渐减少),最高可达 zz ppm。
我的问题是,xx、yy 和 zz 是什么?我知道这些阈值存在,我很确定它们已记录在案,我很确定它们是可配置的,但我永远记不起这些值,也找不到它们。
如果您知道它们是什么,理想情况下我想知道 (a) 默认值是什么和 (b) 它们的文档位置和 (c) 如何配置它们以及 (d) 实际代码在哪里做出回转或跳跃的决定。谢谢。
xx:128ms
ntpd 算法会丢弃超过 128 ms 的样本偏移,除非没有样本偏移小于 128 ms 的时间间隔超过 900 秒。
我不知道有什么方法可以改变 xx。
年: 600 秒
在实践中,需要一个步骤的情况极为罕见,而且几乎总是硬件故障或操作员错误的结果。可以分别使用 tinker 命令的 step 和 stepout 选项更改 step 阈值和 stepout 阈值。如果将阶跃阈值设置为零,则阶跃功能将被完全禁用并且时钟始终被转换。守护程序使用命令行上的 -x 选项将步骤阈值设置为 600 秒。
zz : 500ppm
由于 NTP 协议和算法设计所基于的正确性原则,可能的最大压摆率限制为百万分之 500 (PPM)。因此,本地时钟可能需要很长时间才能收敛到可接受的偏移量,大约每秒 2,000 秒时钟超出可接受范围。
我不相信有办法改变 zz。
至于显示如何决定回转/步进的实际代码,您可能不会在网上找到它。只有算法。这里和这里有关于该算法工作的重要链接。