首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在机器之间将时间同步到毫秒级精度的最佳方法是什么?

在机器之间将时间同步到毫秒级精度的最佳方法是什么?
EN

Stack Overflow用户
提问于 2008-09-18 23:05:35
回答 9查看 37.7K关注 0票数 32

据我所知,PC上的水晶因时钟偏差而臭名昭著。如果时钟总是偏斜,那么在机器之间以毫秒级的精度同步时钟的最佳方法是什么?据我所知,NTP和PTP是可能的解决方案,但是我想知道是否有人有使用stackoverflow.com的经验!

我知道NTP是流行的选择,但是我想知道是否有人有使用PTP (IEEE1588)的经验。

EN

回答 9

Stack Overflow用户

发布于 2008-09-18 23:08:44

只需运行标准NTP守护进程即可。

它确实有从几个GPS设备获取输入以及与网络服务器通话的选项。

编辑:我指的是http://www.ntp.org/,不是Windows自带的那个。

我没有任何关于哪种NTP客户端最适合windows的建议,但对于Unix机器来说,没有什么真正的理由不运行NTP。

票数 17
EN

Stack Overflow用户

发布于 2015-03-10 00:44:55

这里有一些有15年历史的软件,它们可以在毫秒内同步到的百分之一。(我的团队在NTP对我们的实验室来说还不够好的时候写的。)

来自会议论文的abstract:“一种用于联网的商用PC的分布式时钟。在没有额外硬件的情况下,这个时钟将来自多台PC的传感器数据与平均10微秒以下的延迟和抖动联系起来,最坏的情况是100微秒。”

源代码:https://github.com/camilleg/clockkit

(直到2020年2月13日,它一直在http://zx81.isl.uiuc.edu/clockkit/,现在离线。)

票数 15
EN

Stack Overflow用户

发布于 2008-09-18 23:17:36

您不能通过交换数据来将机器同步到毫秒级别,因为任何数据交换本身已经花费了至少毫秒的时间,因此会破坏您的结果!即使是尝试先测量数据传输时间,然后发送时间信息(考虑到测量的延迟)的协议也只是比平均水平稍好一些,但它们仍然不是很好,因为并不是每个数据传输都需要相同的时间(只是不断地ping Internet上的服务器,看看每个ping如何具有不同的延迟)。

真正同步毫秒范围内的两台计算机的唯一方法是让它们都通过一种没有未知或不断变化的延迟的传输方法从相同的源获取时间。例如,如果两者都接收到广播时间的卫星信号。信号总是有一个恒定的延迟(从卫星到地球),他们两个几乎在同一纳秒内接收到它。

例如,德国就有无线电控制的时间。在这个国家的某个地方有一个原子钟(它的准确时间可以精确到纳秒几百年),一些发送者在给定的频率上永久地在全国各地广播当前时间。闹钟甚至手表都可以接收这个时间并与之永久同步(嗯,并不是真正的永久同步,大多数型号每24小时才做一次,以节省电池运行时间)。这种接收器设备也存在于计算机中,且带有软件,该软件可以永久地使计算机时钟与时间信号同步。

据我所知,GPS也会发送时间信息(或者时间可以从GPS信息中计算出来,我对GPS协议不是很熟悉)。因此,将GPS接收器连接到两台计算机上也可能使它们同步到毫秒级。但是,如果您的同步是通过Internet完成的,那么不要期望比一台计算机最多20毫秒的同步更好。

为了更新评论者,

NTP并不像人们喜欢在这里宣称的那样准确:

在公共互联网上,

网络传输协议通常可以将时间保持在几十毫秒的以内,并且在理想条件下,在局域网中可以达到优于1毫秒的精度。

来源:Wikipedia

我宁愿在没有任何网络的情况下保持它们的同步,并进一步保持它们与官方GMT时间的同步,而在这里,GPS可能是在所有机器上获得真正准确结果的唯一方法(不仅精确到ms,实际上精确到微秒)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/97853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档