Leap smear

Desde 2008, em vez de aplicar segundos bissextos aos nossos servidores usando passos do relógio, temos a opção de usar segundos extras nas horas antes e depois de cada salto. O "leap smear" é aplicado a todos os serviços do Google, incluindo todas as nossas APIs.

Nosso padrão proposto

Muitas organizações usam relógios espalhados, e isso seria útil se eles fossem os mesmos. Afinal, o objetivo dos relógios é ler o mesmo horário em diferentes lugares.

Encorajamos qualquer pessoa a usar bissextos a usar um esquadro linear de 24 horas do meio-dia ao meio-dia UTC.

Esse esmaecimento combina os recursos que a experiência mostrou funcionar bem para muitos aplicativos de computação distribuídos:

  • A duração longa mantém a mudança de frequência pequena. A mudança para o smear é de cerca de 11,6 ppm. Isso está nos erros de fabricação e térmicos da maioria das máquinas, osciladores de quartzo e também na taxa máxima de enrolação de 500 ppm do NTP.
  • Centralizar a mancha no segundo bissexto, em vez de fazer com que ela comece ou termine no segundo bissexto, minimiza o deslocamento máximo.
  • Em comparação com um balanço de cosseno, o smear linear é mais simples, mais fácil de calcular e minimiza a mudança de frequência máxima.
  • A duração de 24 horas foi amplamente adotada por outras pessoas que implementam smears. Anteriormente, usávamos uma duração de 20 horas, mas mudamos para nos alinharmos a esse intervalo conhecido de meio-dia.

Planejamos usar essa distribuição para todos os segundos bissextos futuros. A Amazon usa este smear na AWS. Uma maneira de usá-lo nos seus sistemas é configurá-los para usar o NTP público do Google.

Exemplo de padrão

Neste exemplo, suponha que haja um segundo bissexto no final de dezembro de 2022, embora a programação real ainda não tenha sido anunciada.

O período de início começa em 2022-12-31 12:00:00 UTC e continua até 2023-01-01 12:00:00 UTC. Antes e depois desse período, os relógios e serviços de hora em tempo real concordam com relógios que aplicam segundos bissextos.

Durante a detecção, os relógios estão um pouco mais lentos do que o normal. Cada segundo na escala de tempo distribuído é cerca de 11,6 μs maior do que um segundo SI, conforme atingido no Terrestrial Time.

No início do segundo bissexto, o tempo distribuído é inferior a 0,5 s abaixo do UTC. O UTC insere um segundo adicional, enquanto o tempo contínuo continua sem interrupções. Isso faz com que o tempo distribuído fique logo abaixo de 0,5 s antes do UTC quando o segundo bissexto termina.

Ao continuar executando os relógios com a mesma taxa de lentidão, o esmaecimento contínuo reduz esse deslocamento nas próximas 12 horas. Às 12:00:00, os calçados espalhados e contorcidos concordam novamente.

TAI UTC sem marcadores Tempo dividido
31/12/2022 12:00:36.000000 21-12-2022 11:59:59.000000 21-12-2022 11:59:59.000000
31-12-2022 12:00:37.000000 31/12/2022 12:00:00.000000 31/12/2022 12:00:00.000000
21-12-2022 12:00:38.000011 31/12/2022 12:00:01.000011 31/12/2022 12:00:01.000000
2023-01-01 00:00:35.499976 23-12-2022 23:59:58.499976 23-12-2022 23:59:58.000000
00-01-2023 00:00:36.499988 23-12-2022 23:59:59.499988 23-12-2022 23:59:59.000000
01/01/2023 00:00:37.000000 23-12-2022 23:59:60.000000 23-12-2022 23:59:59.500005
00-01-2023 00:00:37.500000 23-12-2022 23:59:60.500000 01/01/2023 00:00:00.000000
01/01/2023 00:00:38.000000 01/01/2023 00:00:00.000000 00-01-2023 00:00:00.499994
2023-01-01 00:00:38.500011 00-01-2023 00:00:00.500011 00-01-2023 00:00:01.000000
01/01/2023 00:00:39.500023 01/01/2023 00:00:01.500023 01/01/2023 00:00:02.000000
01/01/2023 12:00:36.999988 01-01-2023 11:59:58.999988 2023-01-01 11:59:59.000000
01/01/2023 12:00:38.000000 01/01/2023 12:00:00.000000 01/01/2023 12:00:00.000000
01/01/2023 12:00:39.000000 01/01/2023 12:00:01.000000 01/01/2023 12:00:01.000000

Ao longo dos 86.401 segundos do SI do painel, o trecho nos 86.400 segundos indicados adiciona ao segundo SI extra exigido pelo salto.

Um segundo bissexto negativo, se isso ocorresse, seria prejudicado pela aceleração dos relógios nos 86.399 segundos do SI de meio-dia ao meio-dia.

Outros insetos

Vários outros escamares foram propostos ou implementados.

  • UTC-SLS é uma distribuição linear acima de 1.000s antes do salto (23:43:20 a 00:00:00).
  • O smear de 2008 do Google foi usado durante 20 horas antes do salto (04:00:00 a 00:00:00). Essa foi a única vez em que usamos um esmalte de cosseno.
  • O corredor de salto do Google foi um modelo linear de 20 horas centralizado no salto. Usamos isso em 2012, 2015 e 2016.
  • Bloomberg's smear é um método linear acima de 2.000 segundos após o salto (00:00:00 a 00:33:20).
  • A Meinberg implementou uma distribuição de cosseno de duração configurável.

Compatibilidade de software com a distribuição

Nossa biblioteca sem células de código aberto será convertida em qualquer direção entre o tempo distribuído e o TAI ou GPST não propagado.