{"id":2591,"date":"2012-07-05T10:21:44","date_gmt":"2012-07-05T09:21:44","guid":{"rendered":"http:\/\/www.blaess.fr\/christophe\/?p=2591"},"modified":"2012-11-30T13:37:25","modified_gmt":"2012-11-30T12:37:25","slug":"une-seconde-pas-si-anodine","status":"publish","type":"post","link":"https:\/\/www.blaess.fr\/christophe\/2012\/07\/05\/une-seconde-pas-si-anodine\/","title":{"rendered":"Une seconde pas si anodine&#8230;"},"content":{"rendered":"<p style=\"text-align: justify;\"><em><a href=\"http:\/\/www.blaess.fr\/christophe\/2012\/07\/05\/une-seconde-pas-si-anodine\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright  wp-image-2592\" title=\"Leap second\" src=\"http:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2012\/07\/leap-second.png\" alt=\"Leap second\" width=\"150\" height=\"150\" \/><\/a><\/em>Finalement, la petite <a title=\"Une petite seconde de plus en juin\u2026\" href=\"http:\/\/www.blaess.fr\/christophe\/2012\/06\/28\/une-petite-seconde-de-plus-en-juin\/\" target=\"_blank\">seconde intercalaire<\/a> du week-end dernier n&rsquo;est pas pass\u00e9e si inaper\u00e7ue que cela, elle a m\u00eame provoqu\u00e9 le crash de plusieurs serveurs Linux&#8230;<\/p>\n<p style=\"text-align: justify;\">\n<!--more-->\n<\/p>\n<p style=\"text-align: justify;\">On trouve des explications d\u00e9taill\u00e9es sur de nombreux sites (par exemple <a title=\"https:\/\/lwn.net\/Articles\/504744\/\" href=\"https:\/\/lwn.net\/Articles\/504744\/\" target=\"_blank\">un article de LWN<\/a>). En r\u00e9sum\u00e9&nbsp;: le code interne du kernel (dans <code>linux\/kernel\/time\/ntp.c<\/code>) qui a ramen\u00e9 en arri\u00e8re l&rsquo;heure syst\u00e8me d&rsquo;une seconde (afin d&rsquo;ignorer la seconde \u00e9coul\u00e9e dans l&rsquo;heure Unix standard) a \u00ab\u00a0oubli\u00e9\u00a0\u00bb de notifier les <em>High Resolution Timers<\/em> en invoquant une routine nomm\u00e9e <code>clock_was_set()<\/code> de <code>linux\/kernel\/hrtimer.c<\/code>.<\/p>\n<p style=\"text-align: justify;\">Certains timers pr\u00e9alalement programm\u00e9s ce sont donc d\u00e9clench\u00e9 plus t\u00f4t que pr\u00e9vu et reprogramm\u00e9s pour un d\u00e9clenchement qui se produit instantan\u00e9ment et ainsi de suite.<\/p>\n<p style=\"text-align: justify;\">Au lieu de r\u00e9aliser des t\u00e2ches p\u00e9riodiquement &#8211; par exemple tous les centi\u00e8mes de seconde &#8211; le noyau Linux les d\u00e9clenchait en boucle hyst\u00e9rique, gelant le syst\u00e8me et tout l&rsquo;espace utilisateur.<\/p>\n<p style=\"text-align: justify;\">Ce bug (l&rsquo;oubli de notifier les HR Timers lorsqu&rsquo;on recule l&rsquo;heure syst\u00e8me \u00e0 cause d&rsquo;une seconde intercalaire) est tr\u00e8s difficile \u00e0 d\u00e9tecter puisque les conditions ne se pr\u00e9sentent qu&rsquo;une fois tous les deux ou trois ans &#8211; la derni\u00e8re seconde intercalaire remonte au 31\/12\/2008 &#8211; et pose un probl\u00e8me g\u00e9n\u00e9ral de validation du code de Linux face au traitement des \u00e9v\u00e9nements rares.<\/p>\n<p style=\"text-align: justify;\">Certains posent la question de la suppression des secondes intercalaires, d&rsquo;autres d&rsquo;utiliser une r\u00e9f\u00e9rence de temps atomiques TAI. Je vous conseille la lecture de l&rsquo;<a title=\"http:\/\/www.bortzmeyer.org\/leap-second-or-not-leap-second.html\" href=\"http:\/\/www.bortzmeyer.org\/leap-second-or-not-leap-second.html\" target=\"_blank\">article de St\u00e9phane Bortzmeyer<\/a> \u00e0 ce sujet.<\/p>","protected":false},"excerpt":{"rendered":"<p>Finalement, la petite seconde intercalaire du week-end dernier n&rsquo;est pas pass&eacute;e si inaper&ccedil;ue que cela, elle a m&ecirc;me provoqu&eacute; le crash de plusieurs serveurs Linux&hellip;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,8],"tags":[],"class_list":["post-2591","post","type-post","status-publish","format-standard","hentry","category-actualite","category-linux-2"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/2591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=2591"}],"version-history":[{"count":1,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/2591\/revisions"}],"predecessor-version":[{"id":3234,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/2591\/revisions\/3234"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=2591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/categories?post=2591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/tags?post=2591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}