Qual è il più grande aggiornamento dell'orologio hardware che il kernel Linux "11-mode mode" può fare?


18

Quando alcuni programmi relativi al tempo (come ntpd) sono in esecuzione su un sistema Linux, il kernel passerà alla cosiddetta "modalità undici minuti" (vedere la hwclockpagina man) per cui aggiornerà automaticamente l'orologio hardware dall'orologio di sistema ogni undici minuti .

Su SLES11 ho empiricamente stabilito che se impostassi l'orologio hardware in modo che fosse qualcosa come 10 ore dietro l'orologio di sistema, la modalità 11 minuti sembra incapace di far corrispondere l'orologio hardware all'orologio di sistema. Ma se imposto l'orologio hardware 5 minuti dietro l'orologio di sistema, la modalità 11 minuti fa una corrispondenza perfetta.

Quindi a quanto pare c'è un aggiornamento massimo che la modalità di 11 minuti può gestire e mi chiedo di cosa si tratta.


Aggiornare:

Questo è strano ...

Altre sperimentazioni mostrano che quando ho l'orologio HW circa 20 minuti dietro l'orologio di sistema, la modalità di 11 minuti imposterà l'orologio HW in modo che sia esattamente 30 minuti dietro l'orologio di sistema (!):

# 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

Aggiornare:

Mi sono imbattuto in questo: https://bugs.archlinux.org/task/27408, il che implica che nel bene e nel male il kernel non aggiornerà l'orologio hardware quando l'ora dell'orologio hardware è troppo lontana dall'ora dell'orologio di sistema.


Non ho idea di cosa potrebbe causare questo, ma farò la domanda dell'orologio standard: l'orologio hardware è impostato su UTC? (Altrimenti probabilmente dovrebbe essere - Non credo che ciò
spieghi

Sei in India o stai impostando l'orologio sull'ora solare indiana? ITS è GMT +05: 30 quindi potrebbe rappresentare un offset di 30 minuti. Inoltre (ma improbabile), un server ntp mal configurato in India potrebbe essere la causa.
Justin Dearing il

No. Sono negli Stati Uniti / orientali e il server NTP è nel nostro ufficio ed è anche negli Stati Uniti / orientali.
QuantumMechanic,

È su un VPS? NTP e ambienti virtuali non giocano bene insieme.
Scrivener

Non sono riuscito a trovare informazioni di riferimento sulla modalità di 11 minuti nel kernel e quali limiti potrebbe avere. Tuttavia, ntpd verifica che l'ora del sistema e l'ora del server ntp siano entro 1000 secondi. In caso contrario, non tenterà nemmeno di correggere l'ora del sistema. Pensa che potrebbe essere così lontano apposta. Riesci a pensare a un modo per verificare che questa modalità kernel ti limiti piuttosto che ntpd?
JakePaulus,

Risposte:


5

Dalla hwclockpagina man su 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.

Quindi, in virtù della tua corsa hwclock --set, probabilmente l'hai disattivato. Allo stesso modo è possibile verificare l'output di adjtimex --printper confermare.


Ciò che lo spegne è qualcosa che imposta l' ora di sistema . hwclock --setnon tocca l'ora del sistema. E quando lo faccio adjtimex --printconferma che la modalità di 11 minuti è attiva poiché il bit "64" è effettivamente disattivato.
QuantumMechanic

"Se il bit" 64 "di questo numero (espresso in binario) uguale a 0, la modalità 11 minuti è attiva." - significa che se lo stato è dispari, la modalità 11 minuti è disattivata (supponendo che lo stato sia a 64 bit e l'ordine dei bit big-endian)?
jfs,

Se il bit "64" di questo numero (espresso in binario) è uguale a 0 ---> vedo questo come significato del 7 ° bit, oppure la if((status & (1<<6)) == 0)modalità 11 minuti è attiva.
BMiner

Esiste l'implementazione della modalità 11 minuti: lxr.free-electrons.com/source/kernel/time/ntp.c?v=4.4#L509 sync_cmos_clock funzione
osgx,

4

In realtà questo non ha nulla a che fare con la modalità undici minuti nel kernel. Ciò è correlato a una funzionalità di ntpd.

Sei a conoscenza del cosiddetto limite di sanità mentale di ntp? Se il tempo è troppo lontano (ad esempio 10 ore) ntpd si arrende e non inclina l'orologio. In questi casi, ntpd o ntpdate dovrebbero essere eseguiti manualmente. L'opzione Ntpd di -gdovrebbe farlo. Controlla le informazioni dalla pagina man:

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


1
Su questa macchina ntpdè già in esecuzione con l' -gopzione.
QuantumMechanic,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.