На нескольких производственных платформах мы наблюдали симптомы, которые, по-видимому, свидетельствуют о том, что время суток периодически скачет вперед или назад. Прыжки, как правило, составляют около 1 секунды, обычно отменяются (скачок вперед, затем назад очень скоро после этого) и происходят около 50 раз в день. Этот дрейф наиболее заметен в периоды пиковой нагрузки на приложения, а также в периоды интенсивного дискового ввода-вывода, например ежедневного резервного копирования. Эти дрейфы влияют на наше мягкое чувствительное приложение в реальном времени.
Системы - это серверы Oracle Netra X4250 и Netra X4270, работающие под управлением SLES 11SP2 с ядром по умолчанию 3.0.58-0.6.6.
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
Мы отключили NTP , но это не оказало никакого влияния на заносы. Существуют ли инструменты для измерения времени смещения часов? Как мы можем избежать этого?
Это производственные платформы, и мы не можем воссоздать проблему в наших лабораториях, поэтому моя способность экспериментировать ограничена. Если я оставлю это своим собственным устройствам, я напишу инструмент для измерения дрейфа и, возможно, поэкспериментирую с источником часов HPET .
ntpdate(8)
Илиntpd(8)
).Ответы:
Единственные инструменты, которые мне известны, это инструменты NTP, которых должно быть достаточно. Вам не нужно настраивать ntpd для синхронизации с данным источником синхронизации, вы можете просто использовать
-d
опциюntpdate
для получения рассчитанного смещения.Пример:
-d
это опция отладки, которая работает по протоколу NTP, фактически не затрагивая системные часы.Я не слишком удивлен, что вы не можете воспроизвести это в среде разработки / тестирования, так как это, вероятно, только из-за аппаратных часов. Если у вас есть аппаратная поддержка с кем-то, я постараюсь обслуживать ваши машины. Одна возможность - обменять одну из машин разработчика на эту производственную машину, починить прежние системы PROD и повторно представить ее как машину разработчика, чтобы заменить ту, которая сейчас находится в PROD.
Если не считать этого, переключение источника аппаратных часов - это почти все, что вы можете сделать. Если вы не можете или не можете сделать обмен, я бы посоветовал вам пойти по пути hpet. Вы можете проверить, не мешает ли изменение источника синхронизации системным службам, а затем развернуть его в производственной среде.
источник
tsc
основан на процессоре, поэтому имеет смысл, что более высокая активность процессора в любом случае вызовет проблему с аппаратными часами. Если hpet достаточно быстр для вас, то вам, возможно, придется просто попробовать это, получить обслуживание или выполнить обмен. Это единственные варианты, которые я вижу для вас.Одним из решений является использование
HPET
Смотрите также Высокоточный таймер событий
Чтобы установить его в качестве параметра загрузки, используйте
На старом оборудовании
TSC
он часто был нестабильным и был отключен ядром.источник
Я написал более подробный инструмент для сопоставления измерений часов с симптомами задержки, которые демонстрирует наше приложение. Этот инструмент, кажется, исключает то, что я ранее подозревал как дрожание в часах времени Linux.
Короче говоря, моя первоначальная гипотеза оказалась неверной. Но я много узнал о часах Linux из ответов и ссылок, так что спасибо всем, кто откликнулся!
источник
Разве часы не должны быть однообразными, если кто-то не изменит их? Прыжки назад не должны быть возможными. Должно быть что-то, что настраивает часы - задание cron или какой-то другой демон (например, вызов
hwclock --adjust
). Напомню, что ntp сам обновляет статистику по дрифту и регулярно его компенсирует, и если вам не удается долго запустить ntp и получить огромное смещение, он теряет время на несколько дней после него, если вы не сбросите настройки/etc/adjtime
. У вас может быть что-то подобное, что-то, что периодически корректирует смещение времени (и вызывает скачки).ntp
на самом деле предназначен для противодействия этой проблеме.источник