Support des secondes intercalaires par FreeBSD

1. Introduction

Une seconde intercalaire est une correction d’une seconde afin de synchroniser les échelles de temps atomique avec la rotation de la Terre. Cet article décrit comme FreeBSD gère les secondes intercalaires.

Au moment de l’écriture de ce document, le prochain ajout d’une seconde intercalaire aura lieu le 30 Juin 2015 à 23:59:60 UTC. Cette seconde intercalaire se produira pendant un jour de travail pour le nord et le sud de l’Amérique ainsi que pour la région Asie-Pacifique.

Les secondes intercalaires sont annoncées par l’IERS dans le Bulletin C.

Le principe des secondes intercalaires est décrit dans la RFC 7164. Consultez à ce sujet également time2posix(3).

2. Gestion par défaut de la seconde intercalaire sous FreeBSD

La méthode la plus simple pour gérer les secondes intercalaires est l’ensemble des règles POSIX de gestion du temps qu’utilise par défaut FreeBSD combiné avec NTP. Quand ntpd(8) tourne sur le système et que l’heure est synchronisée avec des serveurs NTP qui gèrent correctement les secondes intercalaires, la seconde intercalaire fera que le système répétera automatiquement la dernière seconde de la journée. Aucun autre ajustement ne sera nécessaire.

Si les serveurs NTP de référence ne gèrent pas correctement les secondes intercalaires, ntpd(8) mettra à jour l’heure d’une seconde après que le serveur en amont ait constaté la modification de l’heure et qu’il se soit mis lui-même à l’heure.

Si NTP n’est pas utilisé, un ajustement manuel de l’horloge système sera nécessaire après le passage de la seconde intercalaire.

3. Mises en garde

Les secondes intermédiaires sont ajoutées au même moment partout dans le monde à minuit UTC. Au Japon c’est au milieu de la manitée, à midi dans le Pacifique, en fin d’après-midi en Amérique, et la nuit en Europe.

Nous pensons et nous nous attendons que FreeBSD, si on lui a fourni un service NTP correct et stable, se comporte comme attendu durant la seconde intercalaire, comme il le fit lors des secondes intercalaires précédentes.

Cependant, nous attirons votre attention sur le fait que pratiquement aucune application n’a jamais rien demandé au noyau au sujet des secondes intercalaires. Notre expérience est que, telle qu’elles ont été prévues, les secondes intercalaires sont essentiellement une nouvelle répétition de la seconde précédant la seconde intercalaire, et cela est une surprise pour la plupart des programmeurs d’applications.

D’autres systèmes d’exploitation et d’autres ordinateurs peuvent ou pas gérer la seconde intercalaire de la même manière que FreeBSD, et les systèmes sans service NTP correct et stable n’auront aucune connaissance des secondes intercalaires.

Il est pas rare pour des ordinateurs de planter en raison des secondes intercalaires, et l’expérience a montré qu’une grande partie des serveurs NTP publiques pourront gérer et annoncer les secondes intercalaires de manière incorrecte.

Essayez de vous assurer que rien d’horrible ne s’est produit à cause de la seconde intercalaire.

4. Test

Il est possible de vérifier si une seconde intercalaire sera utilisée. En raison de la nature de NTP, le test pourra ne pas fonctionner 24 heures avant la seconde intercalaire. Certaines horloges de référence n’annoncent les secondes intercalaires qu’une heure avant leur ajout. Questionnons le démon NTP:

% ntpq -c 'rv 0 leap'

Un affichage comprenant le terme leap_add_sec indique un support des secondes intercalaires. Avant les 24 heures précédant la seconde intercalaire, ou après que la seconde intercalaire se soit écoulée, le terme leap_none sera affiché.

5. Conclusion

En pratique, les secondes intercalaires ne sont pas un problème sous FreeBSD. Nous espérons que cette présentation aide à clarifier ce à quoi il faut s’attendre et comment rendre l’ajout de la seconde intercalaire plus aisé.