Auf mehreren Produktionsplattformen haben wir Symptome beobachtet, die darauf hindeuten, dass die Uhrzeit regelmäßig vorwärts oder rückwärts springt. Die Sprünge dauern in der Regel ungefähr 1 Sekunde, werden normalerweise abgebrochen (springen Sie kurz danach vorwärts und zurück) und treten ungefähr 50 Mal pro Tag auf. Diese Abweichung ist am deutlichsten in Zeiten mit hoher Anwendungsauslastung und bei E / A-Vorgängen mit hohem Datenaufkommen, z. B. täglichen Sicherungen, zu beobachten. Diese Abweichungen wirken sich auf unsere weiche, echtzeitempfindliche Anwendung aus.
Systeme sind Oracle Netra X4250- und Netra X4270-Server, auf denen SLES 11SP2 mit dem Standardkernel 3.0.58-0.6.6 ausgeführt wird.
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
Wir haben NTP deaktiviert , aber das hat keinen Einfluss auf die Abweichungen. Gibt es Tools, die die Zeit der Zeitverschiebung messen? Wie können wir das vermeiden?
Dies sind Produktionsplattformen, und wir können das Problem in unseren Labors nicht nachvollziehen, sodass meine Experimentierfähigkeit eingeschränkt ist. Wenn links nach meinen eigenen Geräten, werde ich ein Werkzeug zur Messung der Drift, schreiben und vielleicht mit einem Experiment HPET Clock.
ntpdate(8)
oderntpd(8)
).Antworten:
Die einzigen Tools, die mir bekannt sind, sind die NTP-Tools, die ausreichen sollten. Sie müssen ntpd nicht wirklich so konfigurieren, dass es mit einer bestimmten Taktquelle synchronisiert, für die Sie nur die
-d
Option verwenden könnenntpdate
, um den berechneten Offset abzurufen.Beispiel:
-d
ist die Debug-Option, mit der das NTP funktioniert, ohne die Systemuhr zu berühren.Es überrascht mich nicht, dass Sie dies nicht in Entwicklungs- / Testumgebungen reproduzieren können, da es wahrscheinlich nur an der Hardware-Uhr liegt. Wenn Sie mit jemandem Hardware-Support haben, würde ich versuchen, Ihre Maschinen warten zu lassen. Eine Möglichkeit besteht darin, eine der Entwicklungsmaschinen für diese Produktionsmaschine auszutauschen, die früheren PROD-Systeme zu reparieren und sie wieder als Entwicklungsmaschine einzuführen, um die derzeit in PROD vorhandene zu ersetzen.
Kurz gesagt, das Umschalten der Hardware-Taktquelle ist fast alles, was Sie tun können. Wenn Sie den Tausch nicht machen oder nicht machen können, würde ich vorschlagen, dass Sie den HPET-Weg gehen. Sie können testen, ob die Änderung der Taktquelle mit den Systemdiensten in Konflikt gerät, und diese dann als Hagelsturm in der Produktion bereitstellen.
quelle
tsc
basiert auf der CPU, daher ist es sinnvoll, dass eine höhere CPU-Aktivität sowieso ein Problem mit der Hardware-Uhr auslösen würde. Wenn HPET für Sie schnell genug ist, müssen Sie es möglicherweise nur versuchen, sich warten lassen oder den Tausch durchführen. Dies sind die einzigen Optionen, die ich für Sie sehen kann.Eine Lösung ist zu verwenden
HPET
Siehe auch High Precision Event Timer
Verwenden Sie zum Festlegen als Boot-Parameter
Auf älterer Hardware
TSC
war die oft instabil und wurde vom Kernel deaktiviert.quelle
Ich habe ein detaillierteres Tool geschrieben, um die Taktmessungen mit den Latenzsymptomen unserer Anwendung zu korrelieren. Dieses Tool scheint auszuschließen, was ich bisher als Jitter in der Linux-Tageszeit vermutet habe.
Meine anfängliche Hypothese war ungültig. Aber ich habe durch die Antworten und Links viel über Linux-Uhren gelernt. Vielen Dank an alle, die geantwortet haben!
quelle
Soll die Uhr nicht eintönig sein, wenn sie nicht geändert wird? Rückwärtssprünge sollten nicht möglich sein. Es muss etwas sein, das die Uhr stellt - ein Cron-Job oder ein anderer Daemon (zum Beispiel ein Aufruf von
hwclock --adjust
). Ich erinnere mich, dass ntp selbst die Statistiken für Drift aktualisiert und routinemäßig kompensiert. Wenn Sie lange Zeit ntp nicht ausführen und einen großen Offset erhalten, wird die Zeit danach für Tage durcheinander gebracht, wenn Sie nicht zurücksetzen/etc/adjtime
. Möglicherweise haben Sie so etwas eingerichtet - etwas, das die Zeitdrift periodisch neu anpasst (und Sprünge verursacht).ntp
soll diesem Problem eigentlich entgegenwirken.quelle