Qual é a maior atualização de clock de hardware que o kernel do Linux "modo de 11 minutos" pode fazer?

18

Quando certos programas relacionados ao tempo (como ntpd) estiverem sendo executados em um sistema Linux, o kernel mudará para o chamado "modo onze minutos" (consulte a hwclockpágina do manual), através do qual atualizará automaticamente o relógio do hardware a partir do relógio do sistema a cada onze minutos .

No SLES11, determinei empiricamente que, se eu definir o relógio do hardware como algo em torno de 10 horas atrás do relógio do sistema, o modo de 11 minutos parecerá incapaz de fazer o relógio do hardware corresponder ao relógio do sistema. Mas se eu definir o relógio do hardware 5 minutos atrás do relógio do sistema, o modo de 11 minutos fará uma combinação perfeita.

Então, aparentemente, há alguma atualização máxima que o modo de 11 minutos pode suportar e estou me perguntando o que é.


Atualizar:

Isso é estranho ...

Mais experiências mostram que, quando eu tenho o relógio HW cerca de 20 minutos atrás do relógio do sistema, o modo de 11 minutos define o relógio HW para exatamente 30 minutos atrás do relógio do 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

Atualizar:

Eu deparei com isso: https://bugs.archlinux.org/task/27408, o que implica que, para o bem ou para o mal, o kernel não atualizará o relógio do hardware quando o tempo do relógio estiver muito longe do relógio do sistema.

QuantumMechanic
fonte
Não tenho idéia do que poderia estar causando isso, mas vou fazer a pergunta do relógio padrão: O relógio do seu hardware está definido como UTC? (Se não for ele provavelmente deve ser - eu não acho que isso explica o comportamento que você menciona, mas poderia causar outra estranheza ...)
voretaq7
Você está na Índia ou ajustando o relógio para o horário padrão indiano? O ITS é GMT +05: 30, o que pode representar um deslocamento de 30 minutos. Além disso (mas improvável), um servidor NTP mal configurado na Índia pode ser a causa.
Justin Dearing
Não. Estou nos EUA / Leste e o servidor NTP está em nosso escritório e também é nos EUA / Leste.
QuantumMechanic
Isso está em um VPS? NTP e ambientes virtuais não funcionam bem juntos.
Scrivener
Não consegui encontrar nenhuma informação de referência no modo de 11 minutos no kernel e quais limitações ele pode ter. No entanto, o ntpd verifica se a hora do sistema e a hora do servidor ntp estão dentro de 1000 segundos. Caso contrário, nem tentará corrigir a hora do sistema. Pensa que pode estar tão longe de propósito. Você pode pensar em alguma maneira de verificar se esse modo do kernel está limitando você em vez do ntpd?
precisa saber é o seguinte

Respostas:

5

Na hwclockpágina do manual no 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.

Então, pela virtude de você correr, hwclock --setvocê provavelmente o desligou. Da mesma forma, você pode verificar a saída do adjtimex --printpara confirmar.

Karlson
fonte
O que o desativa é algo que define a hora do sistema . hwclock --setnão toca na hora do sistema. E quando eu faço adjtimex --printque confirma que o modo de 11 min em em desde o "64" bit é realmente off.
QuantumMechanic
"Se o bit" 64 "deste número (expresso em binário) igual a 0, o modo de 11 minutos está ativado." - significa que, se o status é ímpar, o modo de 11 minutos está desativado (assumindo que o status é de 64 bits e a ordem big-endian)?
JFS
Se o bit "64" desse número (expresso em binário) for igual a 0 --->, vejo isso como significando o sétimo bit ou o if((status & (1<<6)) == 0)modo de 11 minutos estará ativado.
BMiner 7/03/16
Há implementação do modo 11 minutos: lxr.free-electrons.com/source/kernel/time/ntp.c?v=4.4#L509 sync_cmos_clock função
osgx
4

De fato, isso não tem nada a ver com o modo de onze minutos no kernel. Isso está relacionado a um recurso no ntpd.

Você está ciente do chamado limite de sanidade do ntp? Se o tempo estiver muito longe (por exemplo, 10 horas), o ntpd desiste e não distorce o relógio. Nesses casos, o ntpd ou o ntpdate deve ser executado manualmente. A opção Ntpd -gdeve fazer isso. Verifique as informações na página de manual:

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

Zouppen
fonte
11
Nesta máquina ntpdjá está sendo executada com a -gopção
QuantumMechanic