Zeitsprünge Linux NTP
Problem
Bei Multi-Core oder Hyperthreading Systemen kann es zu Ungenauigkeiten bei der Zeitnehmung unter Zuhilfenahme des Time Stamp Counters (TSC) kommen. (siehe [1]).
Dadurch kann es beim Einsatz vom NTP Daemon zu Zeitsprüngen kommen. Ein Log Eintrag in /var/log/messages unter CentOS 4 kann wie folgt aussehen:
Mar 22 22:38:47 testserver ntpd[10406]: time reset -305.203273 s
Diese Zeitsprünge können wiederum zu Problemen beim Einsatz von bestimmten Applikationen führen. Ein Beispiel dafür ist der IMAP Server Dovecot. Wenn die Zeit zurück springt, wird der IMAP Server gestoppt, was in /var/log/mail.log wie folgt geloggt wird.
Mar 23 16:21:41 testserver dovecot: Time just moved backwards by 9 seconds. This might cause a lot of problems, so I'll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards
Lösung
Als Lösung hat sich bei 64 Bit Systemen das Deaktieren von TSC als Zeitquelle bewährt.
Detailierte Ausführungen sowie empfohlene Konfigurationsparameter zu einer optimierten Zeit für die jeweiligen Linux Kernel Versionen finden Sie im Knowledge Base Eintrag von Vmware. (siehe [2])
Auf unserem Testsystem mit CentOS 4 x86_64 (ein einzelner Knoten des Thomas Krenn 2 HE Clusters) ist per Default folgendes Timekeeping aktiviert:
Mar 24 08:52:27 test-node1 kernel: time.c: Using HPET/TSC based timekeeping.
Durch das Einfügen des Kernel Parameters "notsc" in /etc/grub.conf wird TSC-basiertes Timekeeping deaktiviert und nur mehr HPET (siehe [3]) Timekeeping verwendet. Nach einem Reboot wird folgendes geloggt:
Mar 24 08:54:05 test-node1 kernel: time.c: Using HPET based timekeeping.
Referenzen
- ↑ Wikipedia Beitrag: Time Stamp Counter
- ↑ VMware: Timekeeping best practices for Linux
- ↑ Wikipedia Beitrag: High Precision Event Timer