adjtimex --adjust 的默认值背后的原理是什么?

adjtimex --adjust 的默认值背后的原理是什么?

adjtimex实用程序有一种--adjust模式,可用于将系统时钟与 CMOS 时钟进行比较,计算建议值打钩频率偏移内核时间变量,并自动安装这些建议值。

默认情况下,将进行 8 次比较 ( count),比较间隔为 10 秒 ( interval)。每进行 3 次比较后都会自动安装建议值,不包括前两次比较。

以下是 的示例输出adjtimex --adjust。整个过程(使用count和 的默认值interval)需要 70 秒:

                                      --- current ---   -- suggested --
cmos time     system-cmos  error_ppm   tick      freq    tick      freq
1391731712      -3.877457
1391731722      -3.879791     -233.4  10000         0
1391731732      -3.882372     -258.1  10000         0   10002   3806862
1391731742      -3.884677     -230.5  10000         0   10002   1999050
1391731752      -3.887348     -267.1  10000         0   10002   4397487
1391731762      -3.887226       12.2  10002   4397487   10002   3599050
1391731772      -3.886892       33.4  10002   4397487   10002   2208425
1391731782      -3.886588       30.4  10002   4397487   10002   2405300

我的问题是,有人知道为什么选择这些默认值(count=8interval=10)吗?

我认为比较间隔越长,系统时钟和 CMOS 时钟之间的漂移估计就越准确。因此,假设我们希望整个过程的持续时间为 70 秒,我认为 是count=3显而易见interval=35的选择(请注意,至少需要 3 次比较才能获得建议的刻度和频率值)。

有人可以解释一下这个问题吗?

答案1

David L. Mills(adjtimex 实用程序的创建者)就该主题撰写了不少论文,可供参考(附有参考文献)这里 您正在寻找的答案可以在他的论文中找到:改进的同步计算机网络时钟算法(1995)

您的问题特别质问了为什么在 70 秒内进行了超过 3 次计数(在本例中是 8 次)。虽然只需要 3 次比较(样本),但可以使用更多样本来建立95% 置信区间估计时钟系统漂移的值。

每第三次比较后安装计算出的建议刻度值,以进一步提高估计漂移的准确性。

从统计学上讲,在较长的时间间隔内采集的样本越多,得到的漂移值就越接近实际漂移值。

Mill 博士论文中的一些有趣历史:在最初的 Unix 设计中,硬件计时器以固定的速率中断内核:SunOS 内核中为 100 Hz,Ultrix 内核中为 256 Hz,OSF/1 内核中为 1024 Hz。由于 Ultrix 计时器间隔(速率的倒数)不能均匀地划分微秒,因此内核每秒增加 64 微秒一次,因此时间尺度由 255 个 3906 µs 的推进加上 3970 µs 的推进组成

Unix 4.3bsd 时钟模型需要由在 100-1000 Hz 范围内运行的振荡器产生的周期性硬件定时器中断。每次中断都会导致将增量滴答添加到内核时间变量中。增量值的选择方式是,计数器加上由 settimeofday() 调用建立的初始偏移量等于以秒和微秒为单位的一天中的时间。当滴答不能均匀地划分以微秒为单位的秒时,每秒将额外的增量 fixtick 添加到内核时间以弥补差异。

“时钟的稳定性是指它能保持恒定频率的能力,准确度是指它的时间与系统时钟的比较能力,而精度是指时间的解析程度。所有这些因素都需要结合起来才能”

相关内容