
Я побежал w32tm /stripchart /computer:time.windows.com
просто ради развлечения и обнаружил, что мои часы отстают от этого сервера времени на 1,3 секунды. Не то чтобы я думал, что Microsoft ошибается, но я пробовал это с разными другими серверами времени в моем городе, просто чтобы исключить потенциальные задержки в сети. Тот же результат.
Очевидным способом исправить это было бы принудительное выполнение повторной синхронизации, поэтому я запустил w32tm /resync
, но разница во времени сохранилась.
Когда я попытался w32tm /query /status
выяснить, что является причиной этой проблемы, я был потрясен, обнаружив, что источник данных о времени по умолчанию для моего компьютера, Local CMOS Clock
по-видимому, никогда не был синхронизирован ни с чем!
Я думал, что понял, что происходит, и быстро добавил несколько серверов времени в список своих коллег с помощью следующей команды: w32tm /config /manualpeerlist:ntp1.scc.kit.edu /syncfromflags:manual /reliable:yes /update
.
Но даже после повторной синхронизации разница во времени осталась на уровне 1,3 секунды? Что не так?
решение1
Оказывается, w32time просто отстой. Microsoft признала это
w32time не может надежно поддерживать время синхронизации в диапазоне от 1 до 2 секунд.
Отличное программное обеспечение, ребята...
Я установил другую реализацию протокола NTP от Meinberg, компании, которая действительно знает, что делает:Загрузка НТП
И бум: моя разница во времени мгновенно сократилась до нескольких миллисекунд.
23:43:23, d:+00.0135611s o:+00.6267124s
23:43:25, d:+00.0169653s o:+00.6379619s
23:43:28, d:+00.0145823s o:+00.0086838s <-- Exact moment the new NTP implementation was installed.
23:43:30, d:+00.0157926s o:-00.0037974s
решение2
https://github.com/MicrosoftDocs/windowsserverdocs/issues/2065#issuecomment-544785547
Вот что вам нужно сделать, чтобы иметь точное время в w32tm.
Итак, вам нужно HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer time.google.com,0x5 time.cloudflare.com,0x1 и еще как минимум 2 (в вашей стране и в вашем локальном IX или университете)https://gist.github.com/mutin-sa/eea1c396b1e610a2da1e5550d94b0453
Теперь сделайте это со всех вкладок https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/configuring-systems-for-high-accuracy?tabs=MaxPollInterval#registry-settings
решение3
Служба w32tm позволяет синхронизировать время только в пределах разницы в 1 секунду между временем ПК и сервера времени. В качестве альтернативы вы можете заставить его всегда синхронизироваться с сервером времени при каждой проверке независимо от разницы во времени. Проверяемое значение — это запись реестра "MaxAllowedPhaseOffset" в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
Чтобы всегда выполнять синхронизацию, установите это значение на 0.
Но сначала проверьте, что это значение находится в пределах желаемого вами значения.Некоторые системынужно учитывать большую разницу во времени. Также, обратите внимание надокументация w32tmчто после того, как будет обнаружено, что требуется синхронизация времени (т.е. разница больше, чем MaxAllowedPhaseOffset), w32tm изменит время либо мгновенно, либо постепенно.