Was könnte dazu führen, dass die Uhr um 5 Minuten springt?

8

Ich habe eine (physische) Box mit einem abgespeckten Ubuntu; Hin und wieder (6 Mal in 3 Monaten) springt die Uhr um genau 300 Sekunden zurück (+ - 0,01 Sekunden; immer genau 300 Sekunden). Es passiert von einer Minute zur nächsten (ich habe eine externe Maschine, die es einmal pro Minute abfragt).

Auf der Box läuft 2.6.26-generic (benutzerdefinierter kompilierter Kernel), Ubuntu 9.04 (ich weiß, ich versuche, es zu aktualisieren, aber es ist halb eingebettet). Es gibt nichts in den Protokollen, was darauf hinweist, was passiert ist, und ich habe eine große Auswahl an Pool.ntp.org-NTP-Servern, die das Problem nach einer Weile beheben.

Weiß jemand, was dies verursachen könnte?

Zusätzliche 1:

Ich habe auch eine Reihe anderer Boxen, auf denen derselbe Kernel ausgeführt wird (binär identisch), und kleinere Variationen derselben Software, bei denen dieses Problem nicht auftritt. Ich habe auch die Hardware ausgetauscht.

Zusätzliche 2 (Zusammenfassung meiner individuellen Kommentare):

  • Ich weiß, dass 9.04 veraltet ist, ich stimme zu, dass es aktualisiert werden sollte, und diese Entscheidung liegt außerhalb meiner Kontrolle. Weil das Management.
  • Ich habe eine große Anzahl von NTP-Servern und eine kleine Anzahl ausprobiert. Es passiert immer noch in beiden Fällen; Wenn ich eine große Anzahl von NTP-Servern habe, repariert es sich schneller.
  • Ich habe die Hardware ausgetauscht
  • Ich verwende denselben Kernel / dasselbe Betriebssystem auf einer anderen Box (mit identischer Hardware), auf der das Problem nicht angezeigt wird.
  • Ein Neustart hat nicht geholfen. (Dieses Problem besteht seit ungefähr 6 Monaten)
  • Die Betriebszeit beträgt ca. 3 Monate. Die Box ist "immer eingeschaltet" und führt eine TK-Anlage (Sternchen) aus.
  • Im Moment stimmt die Uhr genau mit der Software-Uhr überein - 0,000000 Sekunden
  • Ich konnte keine Cron-Jobs finden, die die Hardware-Uhr lesen.
  • Es gibt kein lastbezogenes Muster (obwohl die Last sowieso ziemlich niedrig ist).
  • Es passiert tagsüber und nachts.
  • Es kommt nicht in regelmäßigen Abständen vor. Von den letzten 3 Monaten ist die Hälfte in den letzten 9 Tagen passiert.
  • Dies ist keine "Drift" - 99% der Zeit, es ist innerhalb eines winzigen Bruchteils einer Sekunde, dann springt es von einer Minute zur nächsten genau 300 Sekunden rückwärts. In einer Minute könnte es also heißen, dass es 3:07:03 ist und mein anderer Computer innerhalb von 1 Mikrosekunde, 60 Sekunden später, 3:04:03.
  • Ich kann nichts in den Protokollen finden.
AMADANON Inc.
quelle
1
Ubuntu 9.04 ist jenseits des Lebensendes und wenn Sie zusätzlich einen benutzerdefinierten Kernel ausführen, wird die Unterstützung bestenfalls eingeschränkt. Ein halb eingebettetes System fügt eine weitere Komplexitätsebene hinzu.
Panther
1
Hey, wenn es eine einfache Frage wäre, hätte ich sie inzwischen
behoben
Versuchen Sie, die Anzahl der NTP-Server auf 3 zu reduzieren, und verwenden Sie geografisch nahe gelegene Server mit guter Konnektivität.
Panther
Gute Idee - das habe ich versucht. Der einzige Unterschied bestand darin, dass ntpd mit weniger NTP-Quellen weniger Abfragen durchführte und es länger dauerte, bis der Normalzustand wieder hergestellt war.
AMADANON Inc.
Nun, es ist nicht ntp, das Ihren benutzerdefinierten Kernel oder Ihre Hardware durch Eliminierung verlässt.
Panther

Antworten:

1

Dies klingt nach einer fehlerhaften Echtzeituhr (RTC). Wenn es sich um Ersatzhardware handelt, können Sie das Problem bestätigen, indem Sie ein anderes Betriebssystem ausführen, z. B. eine Live-Linux-CD oder einen PXE-Start, und prüfen, ob Sie den Fehler replizieren können. Wenn auf einem anderen Betriebssystem genau der gleiche Zeitversatz auftritt, haben Sie bestätigt, dass das Problem ein Hardwarefehler ist.

Angenommen, es handelt sich um die RTC, können Sie die folgenden Lösungen in der Reihenfolge ihres Schweregrads ausprobieren.

  • Ersetzen Sie die CMOS-Batterie. Sie können versuchen, zu überprüfen, ob die Batterie defekt ist, indem Sie die Spannung Ihres alten Akkus mit einem Multimeter testen.
  • RTCs ändern. Wenn Sie Glück haben und ein schickes Motherboard haben, hat es möglicherweise zwei RTCs. Eine standardmäßig verwendete hochpräzise Uhr und eine Standard-RTC. Überprüfen Sie die BIOS / EFI-Einstellungen und prüfen Sie, ob Sie zur alternativen RTC wechseln können, um die Verwendung der fehlerhaften zu vermeiden.
  • Versuchen Sie, die RTC zu ersetzen. Abhängig vom Alter Ihres Motherboards ist Ihre RTC wahrscheinlich entweder eine Metalldose oder ein Chip auf dem Board. Sie können versuchen, diese Komponente selbst auszutauschen, wenn Sie über elektronische Kenntnisse verfügen.
  • Ersetzen Sie das Motherboard, da entweder die RTC oder einige der elektrischen Komponenten oder Kabel, die mit der RTC verbunden sind, ausfallen.
Michael Yasumoto
quelle
1

Sie können ein Skript auf der Box ausführen, das die laufenden Prozesse verfolgt und gleichzeitig die Uhr überwacht. Wenn die Uhr plötzlich zurückspringt, protokolliert sie die Liste der zu diesem Zeitpunkt aktiven Prozesse. Vielleicht gibt das einen Hinweis darauf, welcher Prozess die Uhr ändert.

Dies setzt natürlich voraus, dass Sie ein Softwareproblem haben. Auf diese Weise finden Sie nichts, wenn nur Ihre Hardware ausfällt.

/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
Alfe
quelle
0

Die Antwort von Michael Yasumoto scheint alle Grundlagen abzudecken - ich stimme zu, dass Sie sich wahrscheinlich mit Wonky-Hardware befassen -, aber hier ist eine praktische Idee: Verwenden Sie eine zuverlässige Maschine mit sehr guter interner Konnektivität, die eine Handvoll Zyklen zum Ausführen einer NTP-Server, und tun Sie dann " alles, was nötig ist ", damit der NTP-Client, der auf der eingebetteten PBX-Box ausgeführt wird, diesen lokalen NTP-Server so oft wie möglich (z. B. alle 30 Sekunden) für Zeitanforderungen spammt.

Wenn die Box dann endlich aktualisiert wurde, legen Sie sie ordnungsgemäß beiseite und finden Sie heraus, was an einem Punkt (TM) daran falsch war. : P.

i336_
quelle