Назад | Перейти на главную страницу

Можно ли использовать w32tm / stripchart для оценки отклонения во времени двух хостов Windows друг от друга? Лучший способ узнать разницу во времени двух хостов?

Жизнеспособно ли использовать 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 который направил пользователя (ов) до трех дополнительных решений, которые действительно измеряют задержку и джиттер: