Leaping CPU
As have many people around the world, I've found a number of my computers having high CPU load since the Leap Second.
Specifically I've found, the following to be using well over 100% CPU usage:
- Java
- Ruby
- MySQL
- Firefox
- Akonadi (Uses MySQL)
Researching the issue, it seems there is an issue in the Linux kernel affecting futexes with the Leap Second. This is a new issue, not to be confused with other issues which have previously been patched. Futexes are a form of userspace lock, which are used heavily by the likes of Java, etc. This flaw seems to be in essentially every kernel since 2.6.22.
Note: This is a kernel bug, it is not a bug in Java or any other application.
A patch is already on the LKML: [PATCH] [RFC] Potential fix for leapsecond caused futex related load spikes
There is a work around for the issue, which is to simply set the date on the server, using the following:
date `date +\"%m%d%H%M%C%y.%S\"`
or (if you prefer)
reboot
Setting the time certainly sorted my problems, that took Firefox from 163% CPU to 1% and similar for Ruby and Java. Note that just restarting the Java or whatever process will not solve the problem.
This is because setting the system time, will call a kernel function:
clock_was_set()
ensuring the
hrtimer
subsystem is correct. Futexes often use
the hrtimer subsystem in a loop, these sub-second waits are expiring
immediately, causing high CPU usage.
More detail