Kiedy niektóre programy związane z czasem (np. ntpd
) Działają w systemie Linux, jądro przełącza się w tak zwany „tryb jedenastominutowy” (patrz hwclock
strona podręcznika ), w którym co 11 minut automatycznie aktualizuje zegar sprzętowy z zegara systemowego .
Na SLES11 empirycznie ustaliłem, że jeśli ustawię zegar sprzętowy na około 10 godzin za zegarem systemowym, tryb 11-minutowy wydaje się niezdolny do dopasowania zegara sprzętowego do zegara systemowego. Ale jeśli ustawię zegar sprzętowy na 5 minut za zegarem systemowym, tryb 11-minutowy idealnie pasuje.
Najwyraźniej istnieje jakaś maksymalna aktualizacja, którą może obsłużyć tryb 11-minutowy i zastanawiam się, co to jest.
Aktualizacja:
To dziwne ...
Dalsze eksperymenty pokazują, że kiedy mam zegar sprzętowy około 20 minut za zegarem systemowym, tryb 11-minutowy ustawi zegar sprzętowy dokładnie na 30 minut za zegarem systemowym (!):
# 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
Aktualizacja:
Natknąłem się na to: https://bugs.archlinux.org/task/27408, co oznacza, że na dobre lub złe jądro nie zaktualizuje zegara sprzętowego, gdy zegar sprzętowy jest zbyt daleko od zegara systemowego.
Odpowiedzi:
Ze strony podręcznika
hwclock
w RHEL 4.6:Więc dzięki cnocie biegania
hwclock --set
prawdopodobnie to wyłączyłeś. Tym samym tokenem możesz sprawdzić dane wyjścioweadjtimex --print
do potwierdzenia.źródło
hwclock --set
nie dotyka czasu systemowego. A kiedy to robięadjtimex --print
, potwierdza to włączenie 11-minutowego trybu, ponieważ bit „64” jest rzeczywiście wyłączony.if((status & (1<<6)) == 0)
wtedy tryb 11 minut jest włączony.sync_cmos_clock
funkcjaW rzeczywistości nie ma to nic wspólnego z trybem jedenastominutowym w jądrze. Jest to związane z funkcją w ntpd.
Czy zdajesz sobie sprawę z tak zwanego limitu rozsądku NTTP? Jeśli czas jest za daleko (na przykład 10 godzin), ntpd poddaje się i nie przekrzywia zegara. W takich przypadkach ntpd lub ntpdate powinny być uruchamiane ręcznie. Opcja Ntpd
-g
powinna to zrobić. Sprawdź informacje ze strony man:http://doc.ntp.org/4.1.0/ntpd.htm
źródło
ntpd
jest już uruchomiony z-g
opcją.Jądro nie zsynchronizuje czasu, jeśli jest wyłączone dłużej niż 60 minut w trybie Jedenaście Minut. Jest to powszechny problem w SUSE Enterprise, więcej szczegółów można znaleźć w tym artykule z Open SUSE: https://lists.opensuse.org/opensuse-bugs/2011-06/msg01348.html
źródło