Является ли целесообразным использование w32tm /stripchart для оценки временного отклонения двух хостов Windows друг от друга? Лучший способ обнаружить разницу во времени двух хостов?
Это реально использовать w32tm.exe
вариант stripchart
оценить временную дисперсию двух хостов (с очень малой погрешностью)? Обратите внимание, что w32tm.exe
"s stripchart
Функция отличается от алгоритма, используемого Windows Time
Сам сервис.
Если нет, какие существуют альтернативные методы?
Спасибо,
Matt
2 ответа
Ответ на ваш первый вопрос: "Да, w32tm.exe (Windows Time) способен измерять временную дисперсию двух сетевых хостов с очень малой погрешностью (относительный термин)."
Ответ на ваш второй вопрос звучит так: "Да, существуют более эффективные способы измерения временного отклонения между двумя хостами. Microsoft говорит об этом прямо здесь. Они указывают на NIST, в котором перечисляется целый ряд других программных и аппаратных компонентов, которые вероятно, лучше, чем w32tm.exe. Я уверен, что многие из них, так как Microsoft явно не поддерживает w32tm.exe в качестве инструмента сверхвысокой точности ".
Windows Time (и w32tm.exe) соответствуют RFC 1305 (NTPv3), что включает компенсацию задержки в сети. Источник и Источник. Компенсация задержки в сети является одной из основных функций протокола сетевого времени. (См. Алгоритм Марзулло, который использует NTPv3.)
Что расстраивает меня в вашем вопросе, так это то, что высокая точность очень важна для вас, но вы не даете никаких намеков на то, какая именно точность вам нужна. 1 секунда? 1 миллисекунда? 1 наносекунда? Компьютеры общего назначения имеют разрешение часов, которое привязано к частоте прерываний часов, принимаемых процессором, который обычно управляется кварцевым генератором, работающим на частоте 32,768 кГц (мощность два), но чувствительным к температуре, напряжению и т. Д. HAL на типичной машине с Windows по умолчанию настраивает часы реального времени на срабатывание каждые 15,6 миллисекунды или около 64 раз в секунду. Тем не менее, вы все равно можете увеличить RTC до 1 мс, а также разделить этот 15,6-миллисекундный интервал с помощью программного обеспечения на еще меньшие фрагменты для высокопроизводительных приложений. Несмотря на это, сама временная метка NTP представляет собой 64-разрядное число без знака с фиксированной запятой и поэтому имеет теоретический предел точности около 232 пикосекунд, но реализация Windows Time даже не подходит к этому. Windows Time отображает точность NTP -6 и не поддерживает некоторые из самых последних и лучших алгоритмов NTP, поэтому в действительности она, вероятно, никогда не сможет надежно обеспечить точность, превышающую один такт аппаратных тактов, или плюс или минус 16 миллисекунд.
Операционные системы общего назначения не являются чрезвычайно хорошими часами, особенно если алгоритмы хронометража реализованы в пользовательском режиме, где выполняющиеся потоки постоянно прерываются. Высокоточные часы стоят дорого.
На рисунке выше показана частота прерываний часов в системе. Обратите внимание, что даже прерывания по часам (IRQL 28 в 32-разрядной Windows и IRQL 13 в 64-разрядной Windows) могут быть прерваны более высокими прерываниями, такими как межпроцессорные прерывания, и могут привести к отсрочке точного учета времени, даже если наносекунд.
Итак, вернемся к NTP.
w32tm /stripchart /computer:10.0.1.8
это совершенно правильный способ проверить разницу во времени между одним компьютером с Windows и другим. Он учитывает задержку в сети, что подразумевается как NTPv3-совместимость, как мы обсуждали выше. Но не верьте мне на слово. Вы можете увидеть транзакцию для себя в трассировке Wireshark (клиентский пакет, отправленный w32tm.exe на NTP-сервер Windows):
Microsoft не гарантирует точность менее секунды, используя Windows Time, потому что им не нужно поддерживать это для того, чтобы любой из их продуктов работал. Однако это не означает, что w32tm.exe по-прежнему не может с точностью до секунды.
Если вам действительно нужно более точное время, чем это, вы можете потратить лишнюю миллисекунду или 10 единиц точности с другой реализацией NTP, которая использует немного другие алгоритмы. Но если вам действительно нужно более точное время, я лично не рекомендую NTP вообще. Я бы подключил цезиевые часы прямо к вашей машине и не использовал бы упреждающую операционную систему.
Изменить 2/2/2017. Приведенная выше информация устарела и не обязательно относится к Windows Server 2016 и более поздним версиям. Microsoft сделала несколько серьезных улучшений в точности Windows Time в более поздних операционных системах.
Не могу найти w32tm.exe
"s stripchart
счета (или как это учитывает) для задержки и дрожания. Вместо этого я разместил поток в списке рассылки ntp, который направил пользователей на три дополнительных решения, которые измеряют задержку и джиттер:
- Монитор NTP satsignal (дисквалифицирован, так как время опроса не менее 60 секунд)
- NTP Plotter от satsignal (выводит исторические файлы loopstats из ntpd)
- Монитор сервера времени NTP от meinberg (требуется локальная служба ntpd)