2010-08-31 55 views
3

我工作的一些应用程序,通过多台机器路由tcp和更新流量,我试图在每个节点上的时间戳(毫秒分辨率)数据包,以通过每个节点接收延迟的完整图像。通过多台机器时间戳数据 - 时间已关闭?

在测试之前,我确定所有的Windows机器都是NTP同步的,但是我的问题似乎是,所有机器上的时间永远不会完全同步,系统时间似乎会变化±500毫秒。 例如,有时候我的时间戳记记录显示在节点2从节点1发送之前500毫秒收到一个数据包。

在所有机器的NTP重新同步之后,它始终会在节点1和节点2之间显示不同的等待时间,但时间差异始终保持不变直到下一个NTP同步。

将多台机器同步到同一个NTP服务器时,我可以期待什么准确度?我是否有任何理由看到这些差异,以及其他应用程序如何通过涉及多台机器的系统来测量延迟?

感谢,

汤姆

+0

我会对你的最终解决方案感兴趣。 – leppie 2010-09-10 12:27:49

+0

我的解决方案是我只查看打包和离开某个节点的数据包的时间增量,然后总结这些时间,而不是依靠每个节点的时间戳 – TJF 2010-09-13 13:26:52

回答

1

除非你运行在本地局域网上的NTP服务器,有机会,它可能多达由于网络延迟几秒钟关闭。

我认为如果不使用硬件触发器就很难获得毫秒的同步。

编辑:

一个更好的想法是对所有节点相互同步时间。这样你可以不断校准它。

编辑2:

另外请注意,并非所有条件不变的是平等的。由于许多因素,例如振荡器的温度和时间,以及当然缺乏实时操作系统,2系统的定时时钟之间可能存在差异,无论是CPU时钟还是RTC; P

+0

您是否有更多关于如何同步Windows机器时间的信息与对方? 我很惊讶,但我所看到的只是网络延迟造成的。那些服务器坐在纽约的一个DC上,跟踪我使用的NTP服务器,显示它只有8ms远。 – TJF 2010-08-31 05:13:23

+0

@Tom Frey:不是手动的,但我建议寻找多处理器的东西/软件(MPI)。 – leppie 2010-08-31 05:17:45

+0

btw。所有服务器都是完全相同的模型/版本和年龄 – TJF 2010-08-31 05:19:29

0

通过发送双向消息来测量节点1和节点2之间的延迟。 首先发送一些东西从节点1到节点2,并让节点2立即返回一些东西到节点1。 在node1上,您现在可以轻松测量向node2发送消息所用的总时间,并且无需担心在不同计算机上同步时间。

+0

我并不是真的在担心节点之间的延迟,这里我关心的是流经时间多个节点(应用程序逻辑延迟),以及数据包在某个节点何时到达的准确时间表示以及它在每个节点上花费了多少时间。 – TJF 2010-08-31 14:47:27