Что может заставить часы прыгать на 5 минут?

8

У меня есть (физическая) коробка с урезанной Ubuntu; время от времени (6 раз за 3 месяца) часы перемещаются назад ровно на 300 секунд (+ - 0,01 секунды; всегда точно на 300 секунд). Это происходит от одной минуты к другой (у меня есть внешняя машина, опрашивающая его раз в минуту).

Коробка работает под управлением 2.6.26-generic (ядро, скомпилированное пользователем), Ubuntu 9.04 (я знаю, я пытаюсь обновить его, но он частично встроен). В журналах нет ничего, что указывало бы на то, что произошло, и у меня есть большой выбор ntp-серверов pool.ntp.org, которые через некоторое время решают проблему.

Кто-нибудь знает, что может быть причиной этого?

Дополнительный 1:

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

Дополнительно 2 (резюме моих индивидуальных комментариев):

  • Я знаю, что 9.04 устарел, я согласен, что он должен быть обновлен, и это решение вне моего контроля. Потому что управление.
  • Я пробовал большое количество серверов NTP и небольшое количество. Это все еще происходит в обоих случаях; если у меня большое количество ntp-серверов, то это исправляется быстрее.
  • Я поменял оборудование
  • Я использую то же самое ядро ​​/ операционную систему на другом компьютере (с идентичным оборудованием), который не показывает проблему.
  • Перезагрузка не помогла. (эта проблема продолжается около 6 месяцев)
  • Время работы составляет около 3 месяцев. Коробка «всегда включена», работает АТС (звездочка).
  • Прямо сейчас hwclock точно соответствует программным часам - 0.000000 секунд
  • Я не смог найти никаких заданий cron, которые читают аппаратные часы.
  • Нет никакой связанной с нагрузкой схемы (хотя нагрузка в любом случае довольно низкая).
  • Это происходит днем ​​и ночью.
  • Это не происходит через равные промежутки времени. Из них за последние 3 месяца половина произошла за последние 9 дней.
  • Это не «дрейф» - 99% времени, это в течение крошечной доли секунды, затем от одной минуты к другой, он прыгает ровно 300 секунд назад. Итак, одна минута может сказать, что это 3:07:03, что соответствует моему другому компьютеру с точностью до 1 микросекунды, а через 60 секунд - 3:04:03.
  • Я ничего не могу найти в журналах.
AMADANON Inc.
источник
1
Ubuntu 9.04 устарела, и если вы используете собственное ядро, поддержка в лучшем случае будет ограничена. Полу-встроенная система добавляет еще один уровень сложности.
Пантера
1
эй, если бы это был простой вопрос, я бы уже исправил его :)
AMADANON Inc.
Попробуйте уменьшить количество серверов ntp до 3, используйте географически близкие вам серверы с хорошей связью.
Пантера
Хорошая идея - я попробовал это. Единственное отличие заключалось в том, что при меньшем количестве источников ntp ntpd выполнял меньше запросов, и возвращение в нормальное состояние занимало больше времени.
AMADANON Inc.
Ну, это не NTP, что оставляет ваше собственное ядро ​​или оборудование в процессе устранения.
Пантера

Ответы:

1

Это звучит как часы реального времени (RTC). Если это запасное оборудование, вы можете подтвердить проблему, запустив другую ОС, например, загрузив live linux CD или загрузку PXE, и посмотрите, сможете ли вы повторить ошибку. Если в другой ОС происходит то же самое время, вы подтвердили, что проблема связана с аппаратным сбоями.

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

  • Замените батарею CMOS. Вы можете попытаться проверить, является ли это неисправной батареей, проверив напряжение вашего старого тестера с помощью мультиметра.
  • Изменить RTC. Если вам повезло и у вас есть модная материнская плата, она может иметь два RTC. Часы высокой точности, которые используются по умолчанию, и стандартный RTC. Проверьте настройки BIOS / EFI и посмотрите, можете ли вы перейти на альтернативный RTC, чтобы избежать использования неисправного.
  • Попробуйте заменить RTC. В зависимости от возраста вашей материнской платы, ваш RTC может быть либо металлической банкой, либо чипом на плате. Вы можете попробовать заменить этот компонент самостоятельно, если у вас есть некоторые навыки электроники.
  • Замените материнскую плату, так как неисправны либо RTC, либо некоторые электрические компоненты или провода, которые взаимодействуют с RTC.
Майкл Ясумото
источник
1

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

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

/bin/bash

oldTime=$(date +%s)
oldPsOutput=$(ps faux)
while sleep 1
do
  currentTime=$(date +%s)
  currentPsOutput=$(ps faux)
  if [ "$currentTime" -lt "$oldTime" ]  # clock change detected?
  then
    echo '========='
    echo "$currentTime < $oldTime"
    echo "$oldPsOutput"
    echo ':::::::::'
    echo "$currentPsOutput"
  fi >> /tmp/clockChangeDetector.log
  oldPsOutput=$currentPsOutput
  oldTime=$currentTime
done
Альфей
источник
0

Ответ Майкла Ясумото, кажется, охватывает все основы - я согласен, что вы, вероятно, смотрите на нестабильное оборудование - но вот идея практического подхода: используйте надежную машину с очень хорошим внутренним соединением, у которой есть несколько циклов, чтобы сэкономить, чтобы запустить NTP-сервер, а затем сделайте « все, что нужно », чтобы заставить NTP-клиента, работающего на встроенной УАТС, спамить этот локальный NTP-сервер на запросы времени как можно чаще (например, каждые 30 секунд).

Затем, когда коробку окончательно обновят, отложите ее в сторону и выясните, что с ней не так в некоторой точке (TM). :П

i336_
источник