Schaltsekunde: Linux kann einfrieren

Am Wochenende wurde eine Schaltsekunde eingefĂĽgt. Das kann zu Deadlocks auf Linux-Systemen fĂĽhren.

In Pocket speichern vorlesen Druckansicht 482 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Oliver Lau

Die in der vergangenen Nacht geschaltete Extrasekunde kann auf Linux-Rechnern zu dauerhafter CPU-Auslastung führen. Dokumentiert ist dieses Verhalten etwa im Blog der Mozilla Foundation, die vom Zeitpunkt der Schaltsekunde an seltsame Lastspitzen auf einem ihrer Server bemerkte. Die Lösung soll sehr einfach gewesen sein: Datum neu setzen, alternativ das System rebooten.

Auch das aktuelle "Squeeze"-Release der Linux-Distribution Debian scheint vom Schaltsekundenproblem betroffen zu sein. In einer Postmortem-Analyse bei serverfault.com heißt es, etliche Rechner eines Datacenter hätten mit der Schaltsekunde nicht mehr auf Pings reagiert und einen schwarzen Bildschirm gezeigt. Die Systemadministratoren hätten die Situation durch Stoppen des NTP-Daemons und Ausführen eines Perl-Skripts gerettet, das das Schaltsekunden-Bit im Kernel zurücksetzt.

Die Ursache fĂĽr das Verhalten liegt im Linux-Kernel. Dort fĂĽhrt die durch das NTP-Subsystem getriggerte Schaltsekunde zu einer Deadlock-Situation. Davon betroffen sind offenbar alle Kernelversionen von 2.6.26 bis einschlieĂźlich 3.3.

Auf Servern mit Red Hat Enterprise Linux 5 (RHEL5) ist das Deadlock-Problem durch Schaltsekunden seit der Version 5.2 ausgemerzt. Im Bugtracking-System findet sich die Notiz, dass bei Linux-Versionen vor 2.6.29 eine mit dem NTP-Update zusammenhängende Debug-Ausgabe (printk) den Kernel zum Einfrieren gebracht hat.

Vorbeugen ist besser als Heilen, hat sich Google anlässlich wiederkehrender Störungen durch Schaltsekunden in den eigenen Serverparks gesagt und ein "leap smear" genanntes Verfahren etabliert, das ebenso einfach wie genial ist: Mit modifizierten NTP-Servern sorgt Google dafür, dass am Tag der Schaltsekunde mit jedem NTP-Update einige Millisekunden eingefügt werden, die sich bis zum Schaltzeitpunkt zu einer Sekunde addieren. Diese kleinen Differenzen zwischen alter und neuer Systemzeit verkraften Betriebssysteme in der Regel klaglos.

[Update 2.7.2012 10:13]

Die in RHEL 5.2 eingeflossene Korrektur behebt ein älteres, zum Jahreswechsel 2009 aufgetretenes Problem mit Schaltsekunden. Der an der Entwicklung des Timer-Codes im Linux-Kernel beteiligte Entwickler John Stultz hat das jetzt aufgetretene Problem mittlerweile analysiert und arbeitet an zwei Patches. (ola)