3

我想在两台(或更多)有线网络 Linux 机器之间同步两个事件。我可以使用 NTP 来执行此操作吗?

NTP 似​​乎主要专注于与时间服务器同步,我需要两台机器相互同步。那里有一个微妙的区别。例如,如果一台机器距离时间服务器的跳数是第二台机器的一半,如果我尝试直接将两台机器相互同步而不是将两者同步到时间服务器,我可能能够获得更好的同步.

一个稍微不同的问题:如果我要使用 NTP,安排活动的最佳方式是什么?cronjob 还是 at 脚本?如果我要使用这样的库,我能否获得更好的(亚秒级)同步

最后,有没有人知道任何适合将两台(或更多)机器同步在一起的时间同步软件包,不一定要同步到时间服务器。

谢谢你的帮助。

4

2 回答 2

2

您可以尝试将一台机器委托为主机,将其余机器委托为从机。当同步事件应该发生时,主设备触发从设备开始。

同步将仅受机器之间的延迟(ping)限制,您无需担心系统时钟的一致性。

于 2011-02-02T16:30:32.210 回答
0

您的主机之间的 ping 延迟变化是多少?协调流程之间的哪种开始时间差异适合您?将如何启动流程?Cron 非常不精确,还需要考虑进程的启动时间。

如果对不同主机的 ping 时间差异很大,我会做这样的事情。

  • 在活动开始前几分钟,使用可靠的公共 NTP 服务器同步所有协调主机上的时钟。不过,对于频繁的事件,每天 3-4 次同步应该足够了。

  • 使用低精度调度程序cron,例如提前 2-3 分钟,启动一个简单的包装器 shell 脚本, wait()直到事件发生前 15 秒。然后包装脚本以高于正常的优先级启动 tagert 应用程序。

  • 应用程序加载(磁盘访问和动态链接很慢),读取所需的任何数据文件,进行所有耗时的计算等。然后它使用usleep()and ftime()or等​​到亚秒级精度的开始时刻gettimeofday(),放在fireLasersAtTheMoon()or 之前发生了什么成为你的目标行动。

显然,如此精确地同步自然不精确的动作(如网络通信)几乎没有意义。如果您的网络具有可预测的延迟,您只需使用往返时间测量它,ping并在一台主机上创建一个主进程,通过 ssh 向其他主机发送启动命令,同时考虑延迟。

于 2011-02-04T18:21:47.030 回答