32

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

我知道 NTP 是流行的选择,但我想知道是否有人对 PTP (IEEE1588) 有任何经验

4

9 回答 9

17

只需运行标准的 NTP 守护程序。

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

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

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

于 2008-09-18T23:08:43.973 回答
15

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

来自会议论文的摘要:“用于联网商品 PC 的分布式时钟。在没有额外硬件的情况下,该时钟将来自多台 PC 的传感器数据与平均低于 10 微秒(最坏情况下为 100 微秒)的延迟和抖动相关联。”

源代码:https
://github.com/camilleg/clockkit (直到 2020 年 2 月 13 日在http://zx81.isl.uiuc.edu/clockkit/,现在离线。)

于 2015-03-09T16:44:54.637 回答
9

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

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

例如,德国有无线电控制时间。在这个国家的某个地方有一个原子钟(几百年来它的时间精确到纳秒),一些发送者在全国范围内以给定的频率永久广播当前时间。存在可以接收此时间并与之永久同步的闹钟甚至手表(嗯,并非真正永久,大多数型号每 24 小时只执行一次以节省电池运行时间)。此类接收器设备也适用于计算机,并附带可以使您的计算机时钟与该时间信号永久同步的软件。

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

要更新评论者,
NTP 并不像人们喜欢在这里声称的那样准确:

NTP在公共互联网上通常可以将时间保持在几十毫秒以内,在理想条件下在局域网中可以达到优于一毫秒的精度。

资料来源:维基百科

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

于 2008-09-18T23:17:35.840 回答
3

我在公司的整个网络中都使用 NTP,它运行良好。关键是在本地网络上拥有一个权威服务器,并让网络上的每台机器与之同步。最好的办法是在该服务器上安装一个无线电时钟。NTP 很棒,因为它不只是偶尔校正时钟,而且它实际上会计算和校正时钟频率,使其更加准确。

一旦我在网络上设置了 NTP,我就打开了到不同服务器的五个 VNC 会话并坐在那里看时钟。所有服务器上的时钟都以毫秒为单位同步,这是在设置之后。它在运行时变得更加准确。

于 2008-09-18T23:13:58.420 回答
2

基于 NTP 或 SNTP 的解决方案可以很好地工作,但这很大程度上取决于客户端实现的好坏。

当然,如果你想要亚秒级的精度,这个问题的答案是不要使用默认的 Windows 时间服务。众所周知,它在机器上保持稳定的时基方面很差,并且通常会超调校正,甚至几乎是不稳定的,尤其是当机器开始时的时基相当不准确时——这很常见。假设 Window 工具中内置的标准可以在所有机器之间可靠地保持准确度,通常只有几秒钟,我通常会看到机器之间的波动高达 30 秒——即使你调整了注册表设置。

免费软件工具Achron是一个很好的解决方案,可以降低到正负 500 毫秒的范围。做得更好将需要更具工业实力的解决方案,例如Greyware的解决方案

于 2008-09-18T23:15:59.510 回答
2

我最近对这个主题进行了研究(阅读谷歌搜索),这是我到目前为止所学到的:

  • 要获得毫秒精度(或更好),您需要硬件支持。PTP 中的 GPS 源或硬件时间戳(以及良好的时间源)。

  • PTP 中的硬件时间戳是使用受支持的 NIC 完成的 - 英特尔拥有它们。

  • 如果没有硬件时间戳,NTP 和 PTP 之间的准确性是相似的。

  • (以前没有使用过 PTP)我读到 NTP 更容易设置。

  • 我对 GPS 时间源(串行)的有限经验各不相同。如果你能让它工作,那就太好了,但是我们在数据中心有一个设备,我从来没有设法让它工作......

  • 如果您的机器在科罗拉多州,请询问您的 DC 他们可以提供什么 - 这样您就不必做出决定。:D

高温高压

于 2016-02-26T01:27:49.237 回答
1

正如您已经建议的那样,NTP 是解决此问题的行业标准解决方案,但它需要 Internet 连接或第 0 层源(准确的硬件时钟,如具有计算机接口的 GPS 接收器)。

如果您使用 Internet 连接,请考虑使用NTP 池

于 2008-09-18T23:08:04.723 回答
1

NTP绝对是要走的路。基本上是一劳永逸,只要你让它离开本地主机(通常是防火墙或路由器机器)上的防火墙。

于 2008-09-18T23:08:02.430 回答
1

还要记住,硬件系统时钟(即不准确的时钟)仅在机器启动时读取 - 如果您谈论的是服务器机器,您不会因为它们而浪费时间。

于 2008-09-19T00:58:36.017 回答