Quand Google décide de ralentir le temps pour le Nouvel An

Le titre peut sembler racoleur, mais c’est pourtant la réalité : Google vient d’annoncer un serveur NTP public et une petite modification qui joue sur la durée du temps pour régler un éventuel problème avec les secondes intercalaires.

Commençons par le serveur NTP. Historiquement, l’heure d’un ordinateur était fixée manuellement et était ensuite mise à jour avec plus ou moins de précision par un composant appelé le RTC. Quand la pile qui alimente ce dernier se vide, l’ordinateur perd l’heure (un symptôme courant sur les ordinosaures). Le problème vient de la dérive possible entre ce que calcule le RTC et la réalité : la différence peut se compter en minutes après quelques jours avec un mauvais composant. Un sujet que nous traitons dans le dernier hors série, le Raspberry Pi ne possédant pas de RTC.

La solution, depuis quelques années, consiste à utiliser un serveur NTP. Concrètement, il existe des serveurs capables de donner une heure précise grâce à des horloges atomiques, et le système d’exploitation se synchronise dessus périodiquement pour corriger une éventuelle dérive. La nouveauté vient du fait que Google propose maintenant un serveur public, time.google.com. Cette page explique comment éventuellement l’utiliser à la place de celui de votre système d’exploitation.

Maintenant, la seconde intercalaire. Il s’agit en fait d’une correction de la dérive de la rotation de la terre par rapport au temps mesuré. Pour éviter les décalages, une seconde est donc ajoutée quand la dérive atteint cette valeur. Typiquement, elle est ajoutée soit le 30 juin, soit le 31 décembre. Au lieu de passer de 23:59:59 à 00:00:00 le lendemain, l’heure passe officiellement à 23:59:60 puis à 00:00:00. De prime abord, ce n’est pas un problème, sauf pour les programmes informatiques. Quand ils ne connaissent pas l’existence de la seconde intercalaire, ils apprécient rarement qu’une seconde vienne s’ajouter sans prévenir. Dans certains cas, ils considèrent qu’il s’agit d’un bug. Dans d’autres, ils plantent, etc. À chaque fois qu’une seconde intercalaire est ajoutée, des services posent des problèmes.

La solution de Google (et d’autres fournisseurs) consiste à tricher en modifiant le temps. L’idée va être d’étaler la seconde supplémentaire sur un certain temps, en ralentissant le temps renvoyé par les serveurs. Ce que Google propose, c’est de ralentir le temps 10 heures avant et 10 heures après (d’autres le font pendant 24 heures, 1 000 secondes, etc.). Pendant les 20 heures en question (72 000 secondes), la durée de la seconde sur les serveurs sera plus longue, pour supprimer la seconde intercalaire. Quand le serveur indiquera que 72 000 secondes se sont écoulées, 72 001 secondes se seront écoulées dans la réalité. La seconde intercalaire aura été appliquée et les programmes n’essayeront pas de faire des choses bizarres à 23:59:60.

La solution, sans être élégante, a l’avantage de supprimer le problème. Ce qu’espère Google, c’est que les autres fournisseurs de temps (non, il ne s’agit pas d’un méchant de films) suivent son exemple et utilisent la même technique, pour éviter les erreurs. Et Google rappelle aussi qu’il est évidemment impératif d’utiliser la même base de temps partout dans un système, sous peine d’obtenir des résultats incohérents. Et cette année, au lieu d’ironiser sur votre résolution du Nouvel An qui serait le 1 024 x 768 (alors qu’il s’agit d’une définition), comptez plutôt jusqu’à -1 au moment d’entrer en 2017.

About the Author

Dandu
Espion de Cupertino dans la rédac' de Canard PC Hardware. Aime beaucoup les formats totalement obsolètes ainsi que les technologies bizarres et oubliées. Possède un chien robot, des lapins Wi-Fi et un vrai perroquet.