我有一台 Linux 服务器,它的时间与附近的基于 GPS 的 NTP 设备同步。从服务器到设备的 Ping 时间大约为 1 毫秒,抖动非常低:
--- xxxx ping 统计 --- 发送 100 个数据包,接收 100 个数据包,0% 数据包丢失,时间 99001ms rtt min/avg/max/mdev = 0.874/0.957/1.052/0.051 毫秒
但是,NTP 客户端估计时间同步的准确度在 5-6ms 左右,考虑到设置,这似乎非常高:
同步到第 2 层的 NTP 服务器 (xxxx) 时间校正到5 毫秒以内 每 16 秒轮询一次服务器
ntpq -p 给出以下内容:
轮询到达延迟偏移抖动时的远程重新定义 ================================================== ============================ *xxxx .PPS。1 u 10 16 377 0.964 -0.019 0.036
两个问题:
ntpstat“时间校正到内部”后显示的值是根色散+根延迟/2。ntpq -p而不是显示“根色散”运行ntpq -c rl。
尽管如此,很明显,缺乏准确性的主要来源是离散而不是延迟(仅为 0.964)。
离散度是“相对于主要参考源的名义误差”。我已经简要浏览了 NTPv4 RFC,这就是它要说的:
色散 (epsilon) 表示测量中固有的最大误差。它以等于最大规范系统时钟频率容差 (PHI) 的速率增加,通常为 15 PPM。1 PPM 等于 10^(-6) 秒/秒。
使用 rrdtool 术语分散不是一个量表,而是一个计数器。看到较大的值可能并不表示有任何问题。
唉,我无法很好地理解 ntp 算法,无法了解如何使这个数字更小。我注意到这个值偶尔会被重置。我不知道为什么。
我询问上述硬件的原因是因为许多 GPS 设备(层 0,“根”源)连接到计算机,然后通过串行链路充当 NTP 服务器。
由于信令开销/中断等待,串行连接线路上通常有 1-5 毫秒的抖动。因此,我猜您的 NTP 源正在从串行源读取。
您可以对串行连接进行一些调整以减少抖动。首先,禁用 FIFO 可能会获得不错的结果。
http://support.ntp.org/bin/view/Support/KnownHardwareIssues#Section_9.1.5。 http://www.febo.com/time-freq/ntp/jitter/index.html