Die Zeitsysteme des Linux-Kernels stolperten über die Schaltsekunde.
Die Zeitsysteme des Linux-Kernels stolperten über die Schaltsekunde. (Bild: Andreas Donath/Golem.de)

Schaltsekunde Zeitgeber des Linux-Kernels verursachen Serverausfälle

Fehlende Kommunikation zwischen der Systemzeit des Linux-Kernels und dem High-Resolution-Timer ist schuld daran, dass die Schaltsekunde zahlreiche Server aus dem Tritt brachte.

Anzeige

Die zusätzliche Schaltsekunde am 1. Juli 2012 hatte zum Ausfall zahlreicher Linux-Server geführt. In einer ersten Analyse hat Kernel-Entwickler Jonathan Corbet die beiden Zeit-Subsysteme als Fehlerquelle ausgemacht, die der Linux-Kernel bereitstellt. Die vom Kernel benutzte Systemzeit hat dem seit Kernel 2.6.16 eingeführten High-Resolution-Timer (Hrtimer) die Schaltsekunde nicht korrekt mitgeteilt.

Der Hrtimer verwendet intern eigene Zeitgeber, die unterschiedliche Zeitabstände zur Systemzeit haben. Die Realtime-Uhr in Hrtimer passt sich beispielsweise an die Systemzeit an, während die Monotonic-Uhr nicht gestellt werden kann, sie läuft immer nur vorwärts. Die Realtime-Zeitgeber sind von der jeweiligen CPU abhängig, denn diese können auch auf einem einzigen System unterschiedlich laufen. Der Hrtimer rechnet die von ihm ausgelesene Systemzeit in die entsprechenden Werte um, die von der Realtime-Uhr eines Prozessors genutzt werden können.

Fehlende Kommunikation zwischen Systemuhren

In der Kommunikation mit dem Hrtimer nutzte der Kernel nach seiner eigenen Anpassung der Systemzeit an die Schaltsekunde die abschließende Funktion clock_was_set() nicht. Das Resultat: Der Hrtimer lief eine Sekunde vor.

Für die meisten Anwendungen war das kein Problem, schreibt Corbet. In einigen Anwendungen laufen entsprechende Zeitschalter aber in weniger als einer Sekunde ab. Da die Timer nach einem Neustart wieder über die zusätzliche Sekunde stolperten, versetzen sie die jeweilige Anwendung in eine Endlosschleife, wie es mehrfach geschehen ist.

Der Befehl date; date `date +"%m%d%H%M%C%y.%S"`; date; behob das Problem meist ohne Server-Neustart. Einem weiteren Kommentar zufolge reicht der Befehl date -s "`date`".

Patch für Zeitangaben

Der Patch, den Kernel-Hacker John Stultz inzwischen eingereicht hat, reimplementiert die Funktion clock_was_set() in dem Schaltsekundencode, der sich bereits im Kernel befindet. Die Funktion wurde 2007 entfernt, da sie als vernachlässigbar galt. Allerdings muss die Funktion für jede CPU ausgeführt werden, was die Entwicklung des Patches etwas erschwerte.

Wann die nächste Schaltsekunde eingefügt wird, lässt sich nur schwer voraussagen, denn die Erdrotation nimmt nicht stetig ab. Corbet plädiert jedoch dafür, dass Entwickler und Distributoren ein solches Szenario testweise durchführen, um künftig Probleme zu vermeiden.

Seit der ersten Anpassung 1972 wurden insgesamt 35 Sekunden hinzugefügt.


muh3 05. Jul 2012

also erstmal nen Fisch: leider kommt das im Artikel raus, aber der Fehler wurde...

neocron 04. Jul 2012

das hat er doch gar nicht behauptet?

_4ubi_ 04. Jul 2012

Entweder hast du dich verlesen oder das wurde nachträglich geändert.

Kommentieren



Anzeige

  1. Softwareentwickler (m/w) C/C++
    Dialog Lebensversicherungs-AG, Augsburg
  2. Softwareentwickler (m/w) als konzeptstarker und umsetzungsorientierter Projektleiter
    Vector Informatik GmbH, Stuttgart
  3. Softwareentwickler (m/w) ControlDesk
    dSPACE GmbH, Paderborn
  4. Anwendungsentwickler mit Schwerpunkt CAD (m/w)
    ZF Friedrichshafen AG, Schweinfurt

 

Detailsuche


Hardware-Angebote
  1. VORBESTELL-AKTION: Microsoft Lumia 640 vorbestellen und 32GB-Speicherkarte gratis dazu erhalten
    (159,00€/179,00€/219,00€ 3G/LTE/XL)
  2. Evga Geforce GTX 960 SuperSC
    mit 20 Euro Cashback nur 194,90€ bezahlen
  3. TIPP: Kingston HyperX Cloud Headset
    84,90€

 

Weitere Angebote


Folgen Sie uns
       


  1. Onion Omega

    Preiswertes Bastelboard für OpenWrt

  2. Noki

    Intelligentes Türschloss ohne Umbauten installierbar

  3. Samsung 850 Evo

    M.2- und mSATA-Kärtchen erhalten mehr Cache

  4. Mozilla

    Firefox 37 bringt Zertifikatsperren und Nutzerfeedback

  5. Assassin's Creed Chronicles angespielt

    Drei mörderische Zeitreisen

  6. Operation Volatile Cedar

    Spionagesoftware aus dem Libanon

  7. Studie

    Facebook trackt jeden

  8. Umfrage

    Notebook bleibt beliebtestes Gerät zur Internetnutzung

  9. Surface 3 im Hands on

    Das Surface ohne RT

  10. Fotodienst

    Flickr erlaubt gemeinfreie Bilder



Haben wir etwas übersehen?

E-Mail an news@golem.de



Banana Pi M2 angesehen: Noch kein Raspberry-Pi-Killer
Banana Pi M2 angesehen
Noch kein Raspberry-Pi-Killer
  1. Die Woche im Video Galaxy S6 gegen One (M9), selbstbremsende Autos und Bastelei
  2. MIPS Creator CI20 angetestet Die Platine zum Pausemachen
  3. Raspberry Pi 2 ausprobiert Schnell rechnen, langsam speichern

HTC One (M9) im Test: Endlich eine gute Kamera
HTC One (M9) im Test
Endlich eine gute Kamera
  1. Lollipop Erstes HTC-One-Smartphone erhält kein Android 5.1

Mini-Business-Rechner im Test: Erweiterbar, sparsam und trotzdem schön klein
Mini-Business-Rechner im Test
Erweiterbar, sparsam und trotzdem schön klein
  1. Shuttle DS57U Passiver Mini-PC mit Broadwell und zwei seriellen Com-Ports
  2. Broadwell-Mini-PC Gigabytes Brix ist noch kompakter als Intels NUC
  3. Mouse Box Ein Mini-PC in der Maus

  1. Schon seit Ewigkeiten ...

    gaelic | 07:51

  2. Re: Firefox Geschwindigkeit

    gaelic | 07:49

  3. Re: Warten auf NVMe ?

    Benutzername123 | 07:48

  4. Re: Java ist schonmal kein guter Ansatz.

    Soley | 07:45

  5. Re: Ghostery

    MarioWario | 07:44


  1. 07:46

  2. 07:29

  3. 23:51

  4. 18:29

  5. 18:00

  6. 17:59

  7. 17:22

  8. 16:32


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel