В большинстве случаев NTP-сервер не выполняет дискретную настройку системных часов, он только замедляет или ускоряет его с помощью adjtime
, пытаясь контролировать скорость дрейфа. Сервер NTP может делать это довольно непрерывно, и он не будет сообщать вам каждый раз, когда вносит корректировку.
Даже если NTP-сервер сообщает вам, когда он вносит коррективы, эта информация для вас бесполезна. Часы вашего цифрового видеорегистратора управляются другим оборудованием и, следовательно, имеют разную частоту дрейфа и требуют различного набора настроек в разное время. В идеале это должно быть сделано демоном NTP на DVR!
Демон NTP работает при некоторых обстоятельствах, вызывающих скачок часов. Это может произойти при запуске или если часы уходят, но это должно быть очень редким явлением. При этом он, вероятно, выдает сообщение журнала, поэтому одной из возможностей будет просмотр журналов. Другой возможностью было бы время от времени сравнивать результаты clock_gettime(CLOCK_REALTIME)
и clock_gettime(CLOCK_MONOTONIC)
. Когда вы замечаете, что дельта между этими двумя часами изменилась, это должно быть потому, что кто-то сделал скачок системного времени. Но будьте осторожны: результаты будут нестабильными, потому что непредсказуемый и переменный промежуток времени истекает с момента, когда вы получаете один из часов, до момента, когда вы получаете другой.
В зависимости от ваших потребностей, вы можете достичь того, что вам нужно, игнорируя системное время и используя только clock_gettime(CLOCK_MONOTONIC)
для синхронизации с DVR. Эти часы гарантированно не прыгнут. Но будьте осторожны! (опять ?! Хаха!) Я верю, что CLOCK_MONOTONIC
может все еще замедляться и ускоряться под руководством демона NTP.