Entschleunigung

Wie Technik mit der Schaltsekunde am 30. Juni umgeht

Wissen | Know-how

In der Nacht vom 30. Juni zum 1. Juli wird wie alle paar Jahre eine Schaltsekunde eingefügt. Da die erstmals seit dem Millennium auf einen Arbeitstag fällt, könnte es diesmal spannend werden, denn für Computer scheint die zusätzliche Zeit kein Segen zu sein.

Nicht alles in der modernen Welt wird schneller. Die Erde dreht sich immer langsamer. Wer sich wegen der längeren Tage ein neues Hobby suchen möchte, sollte trotzdem kurzfristige Beschäftigungen ins Auge fassen, da die Erddrehung zurzeit nur ungefähr um eine drittel Sekunde pro Jahr von der Zeitzählung hochpräziser Atomuhren abweicht. Da aber die Koordinierte Weltzeit (UTC, ein Kompromiss aus englisch „Coordinated Universal Time“ und französisch „Temps universel coordonné“) nur um maximal 0,9 s von der Ortszeit des Londoner Vororts Greenwich abweichen darf, korrigieren das immer mal wieder Schaltsekunden. Gäbe es die Korrektur der Weltzeit nicht, würde der Morgen über die Jahre immer später grauen. Die letzte zusätzliche Sekunde gab es 2012, die nächste wird an den 30. Juni 2015 angehängt.

Einige werden bei der Schaltsekunde an das Jahr-2000-Problem denken, das entgegen vielen Befürchtungen keine dramatischen Technikausfälle hervorgerufen hat. Schaltsekunden haben in den letzten Jahren aber immer wieder unauffällige Probleme verursacht. Die letzten Schaltsekunden wurden stets in unkritische Tage eingefügt. Im Jahr 2012 war der 30. Juni ein Samstag. In den Jahren 2008, 2005 und 1998 gab es die Schaltsekunde jeweils am Jahreswechsel, nach dem der 1. Januar Feiertag ist. In diesem Jahr fällt sie erstmals seit langer Zeit auf einen Wochentag. Viele Programme müssen jetzt erstmals beweisen, dass sie zum ersten Mal fehlerfrei mit der Zusatzsekunde umgehen können. Beispielsweise fällt die Schaltsekunde in die Handelszeiten bei der Nasdaq, wo der Hochfrequenzhandel genaue Zeitstempel benötigt.

Zeitstempel waren bei Linux schon mehrfach ein Problem. Sie sind in der Unix-Spezifikation als die Anzahl der Sekunden seit dem 1. 1. 1970 definiert. Die Spezifikation legt fest, dass Schaltsekunden nicht mitgezählt werden dürfen. Da die Schaltsekunden in der Unix-Zeit einfach nicht auftauchen, versucht Linux wenigstens durch eine Meldung zu informieren, dass eine Schaltsekunde stattgefunden hat. In den Linux-Kernel Versionen bis 2.6.26.6 hat der Code für die Behandlung der Schaltsekunde xtime_lock reserviert. Dieses Schloss regelt im Kernel den Zugriff auf die Zeit, um Inkonsistenzen durch parallele Zugriffe zu vermeiden. Für die Ausgabe der Meldung über die Schaltsekunde wurde aber in manchen Szenarien der Scheduler bemüht, der selbst auch wieder xtime_lock reservieren wollte. Wegen dieses Deadlocks sind zum Jahreswechsel 2008 auf 2009 zahlreiche Linux-Server komplett ausgefallen. Wer seinen Linux-Rechner für die Silvester-Party ausgeschaltet hatte, blieb verschont.

Am 1. Juli 2012 wurde bei dem deutschen Hoster Hetzner ein plötzlicher Sprung von mehr als 100 Kilowatt in der Leistungsaufnahme der Server festgestellt. Direkt, nachdem Linux die Unix-Zeit für die Schaltsekunde eine Sekunde zurückgestellt hatte, stieg die CPU-Auslastung einer großen Zahl der Server auf 100 Prozent. Bei der Analyse stellte sich heraus, dass ein Timeout im Linux-Kernel (bis 2.6.32) wegen der doppelten Zeitstempel während der Schaltsekunde als direkt abgelaufen angenommen wurde. Wenn der Kernel unmittelbar nach der Anfrage mit dem Timeout direkt antwortete, dass dieser abgelaufen sei, schickten einige Anwendungen darauf sofort wieder die gleiche Anfrage. Mit diesem Pingpongspiel konnten sich Kernel und Programm dann für immer beschäftigen und dabei den Prozessor belasten.

Die Probleme mit voll ausgelasteten Linux-Systemen hängen eigentlich mit einer falschen Verwendung der Zeitfunktionen zusammen. Linux stellt mehrere Schnittstellen für Zeitangaben bereit. Die C-Funktion clock_gettime kann mit dem Parameter CLOCK_REALTIME aufgerufen werden, um die korrekte Zeit anzuzeigen und mit CLOCK_MONOTONIC, um Zeitintervalle zu berechnen. Letztere Zeitzählung läuft auch bei Schaltsekunden weiter, ohne sich zu verstellen. Programme, die CLOCK_REALTIME benutzen, um Timeouts zu prüfen, können nicht nur bei Schaltsekunden Probleme machen, sondern auch, wenn die Systemzeit von Hand verstellt wird. Synchronisiert ein Linux-System seine Zeit nicht automatisch, gibt es keinen Sprung im Zeitverlauf und die Systemuhr geht nach der Schaltsekunde einfach nur eine Sekunde vor.

Google schmiert

Während Linux Probleme macht, ignoriert Windows alle Schaltsekunden einfach. Die innere Uhr des Betriebssystems zählt Zehntausendstel von Millisekunden (100 ns) seit dem 1. Januar 1601, ohne auf die Erddrehung Rücksicht zu nehmen. Trotzdem sollte die Systemuhr gleich wie UTC ticken, sodass die Windows-Uhr nach einer Schaltsekunde um eine Sekunde vorgeht. Allerdings bietet Microsoft eine Schnittstelle, um die Systemzeit zu bremsen. Ein NTP-Client kann die Schaltsekunde über diese Bremsfunktion ausgleichen. Microsoft liefert zwar einen NTP-Dienst mit, der beachtet aber keine Schaltsekunden und ist für eine exakt synchronisierte Systemzeit ungeeignet. Für eine genaue Synchronisation bietet sich die Windows-Portierung des Clients von NTP.org an (siehe c’t-Link). Die streckt bei einer Schaltsekunde seit Version 4.2.8p2 die letzte Sekunde des Tages über zwei Sekunden, sodass der neue Tag zum richtigen Zeitpunkt anfängt. Frühere Versionen haben die in Windows 8 und Server 2012 geänderte API nicht korrekt benutzt und sollten dringend aktualisiert werden.

Google verheimlicht seinen oft mit Linux laufenden Servern mit modifizierten NTP-Servern, dass eine Schaltsekunde ansteht. Stattdessen melden Googles Zeitserver den Clients eine leicht falsche Zeit, die sich über ein auf allen Servern einheitliches Intervall langsam an die Zeit nach der Schaltsekunde annähert. Die „Leap Smear“ genannte Technik nutzt aus, dass NTP-Clients die Zeit bei kleinen Abweichungen ohne Sprünge in die Vergangenheit anpassen. So werden Deadlocks und Endlosschleifen vermieden. Das System hat Google bereits 2012 ohne Probleme durch die Schaltsekunde geführt.

Neben der reinen Verarbeitung können Schaltsekunden auch Probleme bereiten, wenn sie falsch oder zu spät angekündigt werden. Rechtlich bindend in Deutschland ist das Zeitsignal von DCF-77, einem Langwellensender in Mainflingen bei Frankfurt. Dieser kündigt Schaltsekunden 59 Minuten vorher an.

Mithilfe der Zeitsignale, die amerikanische GPS und russische Glonass-Satelliten verschicken, lassen sich anhand der Differenzen in der Signallaufzeit Positionen auf der Erde bestimmen. Die Systeme verwenden dafür unterschiedliche Skalen. GPS verwendet eine lineare Zeitrechnung ohne Schaltsekunden, die seit 1980 von UTC abdriftet. Glonass verwendet Moskauer Zeit, die sich an UTC orientiert (+3 Stunden) und Schaltsekunden berücksichtigt. Beide Systeme versenden Ankündigungen für Schaltsekunden, die teilweise von Empfängern falsch interpretiert wurden. Da einige NTP-Server GPS oder Glonass als Zeitquelle nutzen, können sich solche fehlerhaften Ankündigungen im NTP-Netz verbreiten.

Wer noch genauere Informationen braucht, wie die verschiedenen Systeme mit Schaltsekunden umgehen, sollte einen Blick in die Veröffentlichungen von Martin Burnicki werfen (siehe c’t-Link).

Was kann passieren?

Eigentlich sind für die Schaltsekunde am 30. Juni keine Probleme zu erwarten. Allerdings war das auch bei den vergangenen Schaltsekunden so. Da der Termin dieses Mal auf einen Wochentag fällt, bleibt es spannend. Wer aus rechtlichen Gründen genaue Zeitangaben benötigt, sollte die Schaltsekunde mit Argwohn beobachten. Für Serverbetreiber lohnt sich nach der eingefügten Sekunde ein Blick auf die CPU-Auslastung. Bei Problemen sollte es helfen, die Systemzeit neu einzustellen oder den Rechner neu zu starten. Wer betagte Router oder Hausgeräte betreibt, sollte auch deren Stromverbrauch beziehungsweise Betriebstemperatur im Blick behalten und im Zweifelsfall einen Neustart durchführen. Die Erfahrung mit vergangenen Schaltsekunden hat gezeigt, dass es keine Probleme gibt, wenn Geräte während der Schaltsekunde ausgeschaltet sind. (jme@ct.de)

Artikel kostenlos herunterladen

weiterführende Links

Kommentare

Anzeige
Anzeige