LINUX.ORG.RU
решено ФорумAdmin

Сбивается системное время


0

1

Имеется сервер с Debian (stable) на котором постоянно съезжает системное время. Точнее оно плавно отстает и за пару дней смещение получается аж в ~2 часа. При этом аппаратное время (hwclock) остается нормальным.

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

Пожалуйста, подскажите куда копать.

★★

Последнее исправление: static (всего исправлений: 1)

ты говориш что хардварное время не отстает
и тутже говориш - что выставив время и выключив комп - время съехало ?
как это понять ?

ae1234 ★★
()
Ответ на: комментарий от ae1234

Сорри, не очень понятно написал. Пробовал выключать OpenNTPD на пару дней.

Время съезжает именно во время работы. Машина не перезапусклась уже 17 дней.

static ★★
() автор топика
Ответ на: комментарий от lazyklimm

tzdata настроен правильно, все обновления тайм-зон на месте. Непойму в чем может быть дело.

static ★★
() автор топика

Скорее всего, система не может заюзать HPET таймеры, и юзает TSC. Либо глючное/старое железо, либо отключено в BIOS Setup. Есть опции для ядра, позволяющие ему игнорировать настройки BIOS.

Как результат, системные часы (не путать с RTC, с которых показания считываются только один раз при загрузке) начинают безбожно врать.

У себя лечил с помощью adjtimex и NTPd. Доходило до смешного: пока ntpd раскочегаривался, системное время умудрялось слетать на 200 мс, т.е. хронический stratum 16.

Adjtimex позволяет калибровать системный таймер по RTC. Ясен пень, точность никакая, но по крайней мере ntpd сможет заработать, и сам будет подкручивать системный таймер, уже достаточно точно.

Кстати, OpenNTPD - УГ. Им лучше не пользоваться.

Macil ★★★★★
()

А системное время UTC?, если нет то попробовать установить в UTC.

Попробовать удалить файл /etc/adjtime, заново установить время вручную или с помощью ntpdate, записать его в CMOS - hwclock -w.

lvi ★★★★
()
Ответ на: комментарий от Macil

Сейчас сделал следущее:

Установил adjtimex, максимально синхронизировал системные часы с аппаратными. Запустил OpenNTPD, который подкорректировал время. Сделал hwclock -w и запустил adjtimexconfig.

Он выдал следущее

# adjtimexconfig 
Comparing clocks (this will take 70 sec)...done.
Adjusting system time by 1356.03 sec/day to agree with CMOS clock...done.

Теперь думаю оставить все это дело до завтра.

Спасибо всем огромное!

static ★★
() автор топика
Ответ на: комментарий от IPR

Да, скорее всего. Там старая железка.

Сегодня проверил, расхождение меньше половины секунды. В общем это терпимо по сравнению с несколькими часами :)

static ★★
() автор топика
Ответ на: комментарий от static

Да, скорее всего. Там старая железка.

Нужно разобраться, почему не подцепляются HPET. Не может же быть железка НАСТОЛЬКО старой.

расхождение меньше половины секунды

Если поставишь настоящий ntpd, а не ходячее недоразумение OpenNTPD, то все будет просто отлично.

Macil ★★★★★
()
Ответ на: комментарий от static

Сегодня проверил, расхождение меньше половины секунды. В общем это терпимо по сравнению с несколькими часами :)

ntpdate, чё.

IPR ★★★★★
()
Ответ на: комментарий от Macil

OpenNTPD - УГ

Реквестирую более развёрнутую критику.

zavok
()
Ответ на: комментарий от Macil

Не может же быть железка НАСТОЛЬКО старой.

Я тоже в это не верю, лет 10 назад ставил на тогда уже старую машину, в биосе в принципе не возможно 2000г. и больше установить. Но hwclock устанавливал и читал время нормально, у hwclock какой-то параметр для таких машин был (уже не помню какой), помню дописывал его к этой команде в стартовые скрипты.

lvi ★★★★
()
Ответ на: комментарий от lvi

Я тоже в это не верю, лет 10 назад

10 лет назад все было несколько иначе и система для своих нужд юзала самый обычный 8254 (точнее, его реализацию в чипсете). Тогда никого не волновало, что 18.2 раза в секунду происходит прерывание... Хотя тогда уже был LAPIC и может быть именно его использовали, но проблему постоянных прерываний это не снимало.

Если честно, я не очень в курсе почему современные ядра юзают именно TSC, если им не удалось заюзать HPET. Видимо потому что считается что tickless-ядро это типа круто... А то что TSC врет безбожно, так это никого не волнует.

Но hwclock устанавливал и читал время нормально

Ты путаешь системный таймер и RTC. Это две разные вещи.

Macil ★★★★★
()
Ответ на: комментарий от Macil

Ты путаешь системный таймер и RTC. Это две разные вещи.

Да не, небольшое представление имею. Знаю одно, какой-бы плохой системный таймер не был, час в сутки - это круто. Возможно, конечно, что таймер не корректно определяется, но мне никогда не приходилось принудительно его менять.

А корректировки системного таймера бывало влетали бешеные, это связано с резким изменением системного времени. То-ли после обнуление RTC (сброс настроек биоса), то-ли устанавливал систему когда в RTC непонятно какое время стояло. Обнуление /etc/adjtime помогало всегда.

lvi ★★★★
()
Ответ на: комментарий от Macil

Нужно разобраться, почему не подцепляются HPET. Не может же быть железка НАСТОЛЬКО старой.

Да вобщем она еще не совсем динозавр, надо действительно глянуть в настройки BIOS, когда буду перезаускать машину. Подскажи пож. на предмет чего надо искать? Так и будет что нибудь ...HPET...?

static ★★
() автор топика
Ответ на: комментарий от static

Так и будет что нибудь ...HPET...?

Да. Или High Precision Event Timer. Выводе dmesg точно пишется какой именно источник используется. И вроде бы где-то в /proc.

Macil ★★★★★
()
Ответ на: комментарий от Macil

В биосе насчет HPET ничего не нашел. Зато нашел кое-что в dmesg:

# cat /var/log/dmesg | grep HPET
[    0.175145] pci 0000:00:1f.0: Force enabled HPET at 0xfed00000
[    0.179689] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
static ★★
() автор топика
Ответ на: комментарий от static

Лучше даже вот так:

# cat /var/log/dmesg | grep -i hpet
[    0.175027] pci 0000:00:1f.0: Force enabled HPET at 0xfed00000
[    0.179654] hpet clockevent registered
[    0.179654] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
[    0.179654] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.179654] hpet0: 3 comparators, 64-bit 14.318180 MHz counter
[    0.681942] rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
static ★★
() автор топика
Ответ на: комментарий от static

Я не очень хорошо в этом разбираюсь... Было такое один раз. На железяке ~2005 года. Потыкался, плюнул, заюзал adjtimex + NTPD. А через некоторое время отнес на помойку.

Если Force Enable HPET, то вроде бы в BIOS Setup отключено.

Macil ★★★★★
()
Ответ на: комментарий от Macil

Ну в общем фиг с ним. Попробую еще сам что-нибудь поковырять, вдруг получится. Спасибо еще раз :)

static ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.