尽管在启动前进行了 NTP 同步,但系统时间仍会关闭数百毫秒

hbo*_*ert 0 ntp time time-synchronization

我正在运行几台需要非常严格的时间同步(<50 毫秒)的服务器,因为它们正在运行 Paxos 算法。服务器正在运行 NTP 并在某一时刻成功同步。根据hwclock11分钟的机制被激活,所以系统时间应该被复制到硬件时钟。

但是,我发现重新启动后系统时间可能比重新启动前的时间减少多达 300 毫秒。认为重新启动后的时间应该在重新启动前的时间的 50ms 内是不合理的吗?

Law*_*w29 5

我没有要生成的数字,但用于在启动时设置时钟的接口似乎只能精确到秒。

您没有说明您的操作系统,但在所有类 Unix 系统上,都可以在引导过程中插入对 NTP 时间的依赖。

NTP 守护进程在启动时启动,但通常它会立即将自身置于后台并继续启动,同时 NTP 守护进程寻找要同步的服务器——这是为了在机器未连接到网络的情况下不会延迟启动。

在这种情况下,您需要确保 ntp 守护程序以通过引导时步进来纠正偏移的方式启动。例如,这可以是ntpd -gxchronyc -q。您可能还希望在开始工作负载之前插入一个检查,以确保偏移量是可接受的。

  • 并不真地。即使是预 HPET 时钟也有大约 0.03 ms (2^15 Hz) 的精度。也许时间实际上没有写入硬件时钟(您可以通过读取它并与系统时钟进行比较来检查),或者在启动过程中读取它时可能存在一些问题。 (2认同)
  • 澄清一下,我认为低于 50 毫秒的要求有点过高,但 300 毫秒已经很多了。实际上可能是在某处以一秒的分辨率设置时间。 (2认同)