O que poderia fazer o relógio pular em 5 minutos?

8

Eu tenho uma caixa (física) executando um Ubuntu despojado; de vez em quando (6 vezes em 3 meses), o relógio retrocede exatamente 300 segundos (+ - 0,01 segundos; sempre exatamente 300 segundos). Isso acontece de um minuto para o outro (eu tenho uma máquina externa pesquisando uma vez por minuto).

A caixa está executando 2.6.26-genérico (kernel compilado personalizado), Ubuntu 9.04 (eu sei, estou tentando atualizá-lo, mas está semi-incorporado). Não há nada nos logs que indique o que aconteceu, e eu tenho uma grande variedade de servidores pool.ntp.org ntp, que corrigem o problema após um tempo.

Alguém sabe o que pode causar isso?

1 adicional:

Eu também tenho várias outras caixas executando o mesmo kernel (binário idêntico) e pequenas variações do mesmo software, que não têm esse problema. Eu também troquei o hardware.

2 adicionais (resumo dos meus comentários individuais):

  • Sei que o 9.04 está desatualizado, concordo que deve ser atualizado e que esta decisão está fora de meu controle. Porque gestão.
  • Eu tentei um grande número de servidores ntp e um número pequeno. Isso ainda acontece nos dois casos; se eu tiver um grande número de servidores ntp, ele se corrigirá mais rapidamente.
  • Troquei o hardware
  • Estou usando o mesmo kernel / sistema operacional em outra caixa (com hardware idêntico), que não está mostrando o problema.
  • Reiniciar não ajudou. (esse problema está em andamento há cerca de 6 meses)
  • O tempo de atividade é de cerca de 3 meses. A caixa está "sempre ativada", executando um PBX (asterisco).
  • No momento, o hwclock corresponde exatamente ao relógio do software - 0,000000 segundos
  • Não consegui encontrar nenhum trabalho cron que leia o relógio do hardware.
  • Não há padrão relacionado à carga (embora a carga seja bastante baixa).
  • Isso acontece durante o dia e a noite.
  • Isso não acontece em intervalos regulares. Dos últimos 3 meses, metade ocorreu nos últimos 9 dias.
  • Isso não é "desvio" - 99% do tempo, ocorre em uma fração minúscula de segundo e, de um minuto para o outro, salta EXATAMENTE 300 segundos, para trás. Então, em um minuto, pode-se dizer que são 3:07:03, correspondendo meu outro computador a 1 microssegundo, 60 segundos depois, diz 3:04:03.
  • Não encontro nada nos logs.
AMADANON Inc.
fonte
1
O Ubuntu 9.04 está além do fim da vida útil e, se você estiver executando um kernel personalizado, o suporte será limitado, na melhor das hipóteses. Um sistema semi-incorporado adiciona outra camada de complexidade.
Pantera
1
hey, se era uma pergunta fácil, eu teria fixa-lo agora :)
AMADANON Inc.
Tente reduzir o número de servidores ntp para dizer 3, use aqueles geograficamente próximos a você com boa conectividade.
Pantera
Boa ideia - eu tentei isso. A única diferença era que, com menos fontes ntp, o ntpd fazia menos consultas e demorou mais para voltar ao normal.
AMADANON Inc.
Bem, não é o ntp, que deixa seu kernel ou hardware personalizado pelo processo de eliminação.
Pantera

Respostas:

1

Parece um relógio em tempo real (RTC) com falha. Se esse for um hardware sobressalente, você poderá confirmar o problema executando um sistema operacional diferente, como inicializar um CD live linux ou inicialização PXE e verifique se é possível replicar a falha. Se exatamente o mesmo horário ocorrer em outro sistema operacional, você confirmou que o problema é uma falha de hardware.

Supondo que seja o RTC, você pode tentar as seguintes soluções em ordem de gravidade.

  • Substitua a bateria do CMOS. Você pode tentar confirmar se a bateria está com defeito testando a voltagem da sua bateria antiga com um multímetro.
  • Alterar RTCs. Se você tiver sorte e tiver uma placa-mãe sofisticada, ela poderá ter dois RTCs. Um relógio de alta precisão usado por padrão e um RTC padrão. Verifique as configurações do BIOS / EFI e veja se você pode alterar para o RTC alternativo para evitar o uso do defeituoso.
  • Tente substituir o RTC. Dependendo da idade da sua placa-mãe, o seu RTC provavelmente é uma lata de metal ou um chip na placa. Você pode tentar substituir esse componente por conta própria se tiver algumas habilidades em eletrônica.
  • Substitua a placa-mãe, pois o RTC ou alguns dos componentes elétricos ou condutores que fazem interface com o RTC estão falhando.
Michael Yasumoto
fonte
1

Você pode executar um script na caixa que monitora os processos em execução e ao mesmo tempo monitora o relógio. Se o relógio voltar repentinamente, ele registra a lista de processos ativos naquele momento. Talvez isso dê uma dica de qual processo muda o relógio.

Obviamente, isso pressupõe que você tenha um problema de software. Você não encontrará nada dessa maneira se apenas o seu hardware estiver falhando.

/bin/bash

oldTime=$(date +%s)
oldPsOutput=$(ps faux)
while sleep 1
do
  currentTime=$(date +%s)
  currentPsOutput=$(ps faux)
  if [ "$currentTime" -lt "$oldTime" ]  # clock change detected?
  then
    echo '========='
    echo "$currentTime < $oldTime"
    echo "$oldPsOutput"
    echo ':::::::::'
    echo "$currentPsOutput"
  fi >> /tmp/clockChangeDetector.log
  oldPsOutput=$currentPsOutput
  oldTime=$currentTime
done
Alfe
fonte
0

A resposta de Michael Yasumoto parece cobrir todas as bases - eu concordo que você provavelmente está olhando para hardware instável - mas aqui está uma idéia prática: use uma máquina confiável com muito boa conectividade interna que tenha alguns ciclos de sobra para executar um Servidor NTP e, em seguida, faça " o que for necessário " para fazer com que o cliente NTP em execução na caixa de PBX incorporada faça spam desse servidor NTP local para solicitações de tempo com a maior frequência possível (por exemplo, a cada 30 segundos).

Então, quando a caixa for finalmente atualizada, coloque-a de lado e descubra o que havia de errado com ela em algum momento (TM). : P

i336_
fonte