Jaka jest największa aktualizacja zegara sprzętowego, którą może wykonać jądro Linuksa w „trybie 11-minutowym”?

18

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 hwclockstrona 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.

QuantumMechanic
źródło
Nie mam pojęcia, co może być tego przyczyną, ale zadam pytanie o standardowy zegar: Czy zegar sprzętowy jest ustawiony na UTC? (Jeśli nie, prawdopodobnie tak powinno być - nie sądzę, że to wyjaśnia zachowanie, o którym wspomniałeś, ale może powodować inną dziwność ...)
voretaq7
Czy jesteś w Indiach lub ustawiasz czas na czas standardowy w Indiach? ITS to GMT +05: 30, więc może to być 30-minutowe przesunięcie. Przyczyną może być również (ale mało prawdopodobne) źle skonfigurowany serwer NTTP w Indiach.
Justin Dearing,
Nie. Jestem w USA / Wschodniej, a serwer NTP jest w naszym biurze, a także w Stanach Zjednoczonych / Wschodniej.
QuantumMechanic,
Czy to jest na VPS? NTP i środowiska wirtualne nie działają dobrze razem.
Scrivener,
Nie mogłem znaleźć żadnych informacji na temat trybu 11-minutowego w jądrze i jakie mogą mieć ograniczenia. Jednak ntpd sprawdza, czy czas systemowy i czas serwera ntp mieszczą się w granicach 1000 sekund. Jeśli nie, nie będzie nawet próbował poprawić czasu systemowego. Uważa, że ​​celowo może być tak daleko. Czy możesz wymyślić jakiś sposób na sprawdzenie, czy ten tryb jądra Cię ogranicza, a nie NTTP?
JakePaulus

Odpowiedzi:

5

Ze strony podręcznika hwclockw RHEL 4.6:

This mode (we'll call it "11 minute mode") is off until something turns it on.  The ntp
daemon  xntpd  is  one thing  that  turns  it on.  You can turn it off by running
anything, including hwclock --hctosys, that sets the System Time the old fashioned way.

To see if it is on or off, use the command adjtimex --print and look at the value of
"status".  If the "64" bit of this number (expressed in binary) equal to 0, 11 minute mode 
is on.  Otherwise, it is off.

Więc dzięki cnocie biegania hwclock --setprawdopodobnie to wyłączyłeś. Tym samym tokenem możesz sprawdzić dane wyjściowe adjtimex --printdo potwierdzenia.

Karlson
źródło
To, co je wyłącza, to ustawienie czasu systemowego . hwclock --setnie dotyka czasu systemowego. A kiedy to robię adjtimex --print, potwierdza to włączenie 11-minutowego trybu, ponieważ bit „64” jest rzeczywiście wyłączony.
QuantumMechanic
„Jeśli bit„ 64 ”tej liczby (wyrażony binarnie) równy 0, włączony jest tryb 11-minutowy.” - czy to oznacza, że ​​jeśli status jest nieparzysty, to tryb 11-minutowy jest wyłączony (zakładając, że status to 64-bit i kolejność bitów big-endian)?
jfs
Jeśli bit „64” tej liczby (wyrażony binarnie) równy 0 ---> to widzę, że oznacza to 7. bit, lub if((status & (1<<6)) == 0)wtedy tryb 11 minut jest włączony.
BMiner
Istnieje implementacja trybu 11-minutowego: lxr.free-electrons.com/source/kernel/time/ntp.c?v=4.4#L509 sync_cmos_clock funkcja
osgx
4

W 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 -gpowinna to zrobić. Sprawdź informacje ze strony man:

http://doc.ntp.org/4.1.0/ntpd.htm

Zouppen
źródło
1
Na tym komputerze ntpdjest już uruchomiony z -gopcją.
QuantumMechanic,