Wenn bestimmte zeitbezogene Programme (wie ntpd
) auf einem Linux-System ausgeführt werden, wechselt der Kernel in den sogenannten "Elf-Minuten-Modus" (siehe hwclock
Manpage), wodurch die Hardware-Uhr automatisch alle elf Minuten von der Systemuhr aktualisiert wird .
Unter SLES11 habe ich empirisch festgestellt, dass der 11-Minuten-Modus nicht in der Lage ist, die Hardware-Uhr an die Systemuhr anzupassen, wenn ich die Hardware-Uhr auf etwa 10 Stunden nach der Systemuhr stelle. Wenn ich die Hardware-Uhr jedoch 5 Minuten hinter der Systemuhr stelle, passt der 11-Minuten-Modus perfekt zusammen.
Es gibt also anscheinend ein maximales Update, das der 11-Minuten-Modus verarbeiten kann, und ich frage mich, was es ist.
Aktualisieren:
Das ist komisch ...
Weitere Experimente zeigen, dass wenn ich die HW-Uhr etwa 20 Minuten hinter der Systemuhr habe, der 11-Minuten-Modus die HW-Uhr auf genau 30 Minuten hinter der Systemuhr setzt (!):
# date
Tue Dec 6 10:16:52 EST 2011
# hwclock --set --date "12/6/11 09:56"
#
# date
Tue Dec 6 10:17:16 EST 2011
# hwclock --show
Tue Dec 6 09:56:06 2011 -0.156551 seconds
#
# date
Tue Dec 6 10:23:09 EST 2011
# hwclock --show
Tue Dec 6 10:01:58 2011 -0.535772 seconds
#
# date
Tue Dec 6 10:34:28 EST 2011
# hwclock --show
Tue Dec 6 10:04:27 2011 -0.192025 seconds
Aktualisieren:
Ich bin auf Folgendes gestoßen: https://bugs.archlinux.org/task/27408. Dies bedeutet, dass der Kernel die Hardware-Uhr nicht aktualisiert, wenn die Uhrzeit der Hardware zu weit von der Uhrzeit des Systems entfernt ist.
Antworten:
Aus der
hwclock
Manpage zu RHEL 4.6:Wenn du also rennst,
hwclock --set
hast du es wahrscheinlich ausgeschaltet. Aus dem gleichen Grund können Sie die Ausgabe von überprüfenadjtimex --print
, um zu bestätigen.quelle
hwclock --set
berührt nicht die Systemzeit. Und wenn ichadjtimex --print
die bestätigt , dass 11-min - Modus in auf , da der „64“ Bit ist in der Tat aus.if((status & (1<<6)) == 0)
11-Minuten-Modus ist aktiviert.sync_cmos_clock
functionTatsächlich hat dies nichts mit dem Elf-Minuten-Modus im Kernel zu tun. Dies hängt mit einer Funktion in ntpd zusammen.
Kennen Sie die sogenannte Sanity Limit von NTP? Wenn die Zeit zu weit entfernt ist (zum Beispiel 10 Stunden), gibt ntpd auf und verzerrt die Uhr nicht. In diesen Fällen sollte ntpd oder ntpdate manuell ausgeführt werden. Ntpd Option
-g
sollte das tun. Überprüfen Sie die Informationen auf der Manpage:http://doc.ntp.org/4.1.0/ntpd.htm
quelle
ntpd
wird bereits mit der-g
Option gearbeitet.Der Kernel synchronisiert die Zeit nicht, wenn er im Elf-Minuten-Modus länger als 60 Minuten ausgeschaltet ist. Dies ist ein häufiges Problem in SUSE Enterprise. Weitere Informationen finden Sie in diesem Artikel von Open SUSE: https://lists.opensuse.org/opensuse-bugs/2011-06/msg01348.html
quelle