Жизнеспособно ли использовать w32tm.exe
вариант stripchart
судить о временном разбросе двух хостов (с очень небольшой погрешностью)? Обратите внимание, что w32tm.exe
с stripchart
функция отличается от алгоритма, используемого Windows Time
сам сервис.
Если нет, то каковы альтернативные методы?
Спасибо,
Мэтт
Ответ на ваш первый вопрос: «Да, 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. Я бы подключил цезиевые часы прямо к вашей машине и не использовал бы вытесняющую операционную систему.
Изменить 5/2/2017: Приведенная выше информация устарела и не обязательно относится к Windows Server 2016 и более поздним версиям. Microsoft внесла серьезные улучшения в точность времени Windows в более поздних операционных системах.
Я не могу определить, был ли w32tm.exe
с stripchart
учитывает (или как он учитывает) задержку и джиттер. Вместо этого я обнаружил ветка в списке рассылки ntp который направил пользователя (ов) до трех дополнительных решений, которые действительно измеряют задержку и джиттер: