Метка времени данных на нескольких машинах - время выключено? - PullRequest
3 голосов
/ 31 августа 2010

Я работаю над некоторыми приложениями, которые маршрутизируют tcp и upd трафик через несколько машин, и я пытаюсь пометить метками времени (с точностью до миллисекунды) пакеты на каждом узле, чтобы получить полное представление о задержке через каждый узел.

Перед тестами я удостоверился, что все машины Windows синхронизированы по NTP, однако моя проблема, похоже, заключается в том, что время на всех машинах никогда не бывает полностью синхронизированным, а системное время, похоже, колеблется в пределах + -500 мс.Например, иногда мои журналы отметок времени показывают, что пакет был получен на узле 2 за 500 мс до того, как он был отправлен с узла 1.

После повторной синхронизации NTP всех машин всегда будет отображаться различная задержка между узлом 1 и узлом 2, но времяразличия всегда постоянны до следующей синхронизации NTP.

Какую точность можно ожидать при синхронизации нескольких машин на одном сервере NTP?Есть ли какая-то причина, по которой я вижу эти несоответствия и как другие приложения измеряют задержку в системе, включающей несколько компьютеров?

Спасибо,

Том

Ответы [ 2 ]

1 голос
/ 31 августа 2010

Если вы не запускаете NTP-сервер в локальной сети, есть вероятность, что он может быть отключен на несколько секунд из-за задержки в сети.

Я думаю, что было бы довольно сложно получить миллисекундную синхронизацию без использования аппаратных триггеров.

Edit:

Лучше было бы, чтобы все узлы синхронизировали время друг с другом. Таким образом, вы можете постоянно калибровать его.

Редактировать 2:

Также обратите внимание, что не все равные равны. Могут быть различия между тактовыми частотами двух систем, будь то тактовая частота процессора или RTC, из-за любого количества факторов, например, температуры и возраста генераторов, а также, конечно, отсутствия ОС реального времени;

0 голосов
/ 31 августа 2010

Измерение задержки между узлом 1 и узлом 2 путем отправки двусторонних сообщений.Сначала отправьте что-то с узла 1 на узел 2, и пусть узел 2 немедленно вернет что-то на узел 1.На узле 1 теперь вы можете легко измерить общее время, прошедшее для отправки сообщения на узел 2 и обратно, не беспокоясь о времени синхронизации на разных компьютерах.

...