Mit der Einfügung der Schaltsekunde in die UTC Zeit, welche die UTC Zeit mit der Sonnenzeit UT1 synchronisiert, sind in den vergangenen Tagen öfters Probleme bei Linux Systemen aufgetreten.

 

Durch den Fehler, welcher im Kernel auftritt, setzt der Hrtimer-Code die Systemzeit nicht, wenn er die Schaltsekunde einfügt. Dies hat zur Folge, dass die Hrtimer-Repräsentation der vom Kernel angenommenen Zeit der Systemzeit eine Sekunde voraus ist. Wenn nun Software eine Kernel-Funktion mit einem Timeout unter einer Sekunde aufruft, nimmt der Kernel direkt nach dem Setzen des Timers an, der Timeout sei abgelaufen, und springt sofort zu dem Code des Programms zurück. Viele Programme wiederholen bei einem Timeout die angeforderte Operation einfach und setzen so sofort einen neuen Timer. Das kann zu einer Endlosschleife führen, die den Prozessor voll auslastet.

 

Die Lösung ist sehr einfach und kann ohne Neustart des Systems umgesetzt werden:

 

CentOS, RHEL, SuSE und ähnliche Systeme:

 

service ntpd stop
date -s "$(LC_ALL=C date)"
service ntpd start

 

Hinweis von Jones

Alle Systeme, die `service` nicht unterstützen:

 

/etc/init.d/ntp stop
date -s "`date`"
/etc/init.d/ntp start

 

Danach kann normal mit dem System weitergearbeitet werden, es ist kein Neustart notwendig.

 

Hetzner hat durch den Bug einen Anstieg des Stromverbrauchs um über 10% oder um 150’000 Watt festgestellt, nur weil die betroffenen Systeme die Prozessoren ungewöhnlich ausgelastet haben.