Hardware - разное

       

Принципы корректировки


Существует масса сфер, где необходимо точное знание текущего времени, скажем, управление трафиком воздушных судов. Такие приложения должны обеспечиваться гарантиями, что локальное компьютерное время корректно и находится внутри определенных рамок относительно заданной временной шкалы - как правило, UTC. Столь строгие рамки предопределяют некоторые очевидные аксиомы. Так, наибольшая погрешность при чтении удаленного времени сервера не может превысить половину общей транспортной задержки.

Принципы корректировки системного времени требуют, чтобы его значение наращивалось монотонно, а потому двух успешных считываний значений времени одновременно быть просто не может, эти значения никогда не будут равны. Такое положение вещей очевидно в случае, если латентность при считывании значений превосходит аппаратную разрешающую способность. В современных микропроцессорах задержки считывания имеют значения на уровне микросекунд, а системное время в нынешних операционных системах отсчитывается на уровне наносекунд (оригинальное ядро ОС UNIX оперировало еще микросекундами).

По своей природе корректировка времени представляет собой непрерывный процесс, заключающийся в последовательности сверок показаний каждого из нескольких доступных серверов с результирующей установкой верного системного времени.

Протокол NTP предполагает использование серверов синхронизации, для которых транспортная задержка будет минимальной. Алгоритм коррекции накапливает образцы смещений/задержек в специальном окне образцов и выбирает сэмпл, ассоциированный с наименьшей задержкой. Теоретически лучшие результаты в плане точности достигаются с увеличением размеров окна, но из соображений стабильности работы размер окна составляет примерно 8 сэмплов.

Похожий принцип может быть использован при выборе подмножества серверов для синхронизации или объединением их временных смещений для коррекции времени. Тем не менее различные серверы часто отображают различные систематические смещения, в силу этого статистика всех серверов бывает недостаточно убедительной. И тогда могут оказаться полезными некоторые алгоритмы из мира кластеров. Один из них нашел применение в реализации протокола NTP. Смещения от различных серверов сортируются в соответствии с показателем качества, после чего вычисляются отклонения значений различных серверов относительно среднего значения смещения. Затем постепенно отбрасываются "неблагонадежные" серверы, а конечный результат - просто средняя величина от оставшихся серверов.



Содержание раздела