2010-08-31 41 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