我正在研究如何保持系统之间的时间同步。我最终决定测量主机之间的实际时钟差异,发现在 13 小时内,存在相当大的(在我看来)漂移。相对于“主”主机:
- 系统A 获得 3 秒
- systemB 节省了 2 秒
- systemC 损失了 7 秒
这是一个相对正常的情况吗?“主”系统和系统 A全新HP DL380,而系统 B 和 C 已有 2-3 年历史。
我们将检查 CMOS 电池,但我不知道这是否会影响系统开机时的时钟运行。
谢谢!
答案1
您没有提到它运行的是什么操作系统 - 因为您使用的是 ntpd,所以我假设它是 Linux/Unix/BSD。
操作系统获取时间戳的时钟是不是硬件时钟 - 这是两个独立的实体(如果我没记错的话,它不是 POSIX 的一部分,但大多数 Unix 类型的系统都提供了一个实用程序 hxclock 来与硬件时钟交互)。系统时钟是在启动时根据硬件时钟设置的(硬件时钟应该从关机时的系统时间设置 - 但实现方式有所不同)。
您已将其标记为 ntpd - 但您当前是否正在运行 ntpd(配置为使用有效服务器和对漂移文件的读/写访问权限)?如果不是,那么即使每小时几秒也不必担心 - 只需设置 ntpd,它就会了解系统时钟相对于服务器时间的漂移情况,并找出如何通过 adjtime[x] 进行补偿。如果您已经在运行正确配置和训练的 ntpd,那么这里一定发生了一些非常奇怪的事情。
答案2
是的,确实如此。非常糟糕,但确实如此。偏差并不大 - 13 小时有 46800 秒。这是 CPU 频率季度中的一些小公差 ;)
我知道一些高精度系统(一个rtp质量分布,一个金融市场数据)并且两者都有自己的时间sny机制(rtp:基于自定义ntp客户端,市场数据无论如何都会发送大量也包含时间信号的udp数据包)。
计算机时钟对于大多数用途来说“足够好”,这就是它的用途。对于任何更具体的事情,请使用特殊硬件。我的市场流计算出我的系统时钟偏差为 39ms/小时 ;)