Vladislav Shpilevoy PRO
Database C developer at Tarantool. Backend C++ developer at VirtualMinds.
Выполнил: Шпилевой Владислав Дмитриевич, 420
Научный руководитель: Герасев Александр Витальевич
Время в Linux - аппаратный счетчик
Предложить модификации алгоритма, позволяющие:
исправить ошибки,
улучшить точность синхронизации
Реализовать данные модификации и провести апробацию модифицированного алгоритма на реальной вычислительной системе реального времени
PPS-сигнал
PPS-сигнал
Аппаратный счетчик += 10^9 единиц
Системное время += 10^9 наносекунд
PPS-сигналы - эталон → с прошлого сигнала системное время должно увеличиться на 1 секунду
Ошибка частоты - отклонение счетчика
Ошибка фазы - отклонение системного времени
Важно: ошибки фазы - хороший показатель точности синхронизации, ведь на них так же отражаются ошибки частоты
Длина интервала меняется в некотором диапазоне по мере работы алгоритма
Если частота считается стабильной - длина возрастает, иначе уменьшается
Разные цвета - разные интервалы.
Видно, что часы возрастают не строго линейно.
Нечетко определена стабильность частоты → длина интервала иногда меняется неверно
Если частота стала нестабильна внутри интервала, его результаты полностью отброшены
Частота
Время
Мной предложено три модификации
Оригинальный алгоритм
Анализ последних частот
Анализ ошибок фазы
Фильтр Калмана
Анализ ошибок фазы
Анализ последних частот
Фильтр Калмана
Математическое ожидание:
Среднее отклонение:
x ~6.5
x ~3.5
-900 ns
-140 ns
1930 ns
550 ns
x ~4.7
x ~3.6
-1700 ns
-140 ns
3360 ns
12100 ns
x ~25
x ~1.4
-500 ns
-20 ns
530 ns
390 ns
Ядро Linux
NTP
hardpps
Профилировщик
Исправление частоты
Исправление фазы
Фильтры ошибок фазы
Оригинальный алгоритм
Анализ последних частот
Анализ ошибок фазы
Фильтр Калмана
Реализован профилировщик подсистемы hardpps
Проведено исследование работы алгоритма на аномальных входных данных
Предложено и реализовано три модификации алгоритма синхронизации времени
Проведено исследование модификаций на различных данных на реальной системе, и проведен анализ эффективности каждой модификации
Мною проделана следующая работа:
При монотонном изменении частоты алгоритм без модификаций обновляет частоту слишком редко.
Длины интервалов возрастают вместо убывания. Результаты некоторых интервалов просто не применяются.
Стрелки - инверсии в последовательности ошибок
Причина ухудшения точности - коррекции частоты и фазы производились не по оригинальным меткам и не соответствовали действительности.
By Vladislav Shpilevoy
Database C developer at Tarantool. Backend C++ developer at VirtualMinds.