I heard lately tons of discussions regarding the kernel numbering, and that it’s about time the kernel gets bumped to 4.0. But I felt that the discussion regarded only the cosmetic aspect of calling the kernel ‘a bigger version’. This happened until I read this article from zdnet. Basically, they want to make Linux always on, truly on, at all times, even during upgrades.
To put it simply, there are two competing solutions that want to achieve this. The first is supported by RedHat (big up!) and it’s called KPatch. It does the patching by calling a big ‘stop everything’, then goes and checks if it can replace the code in memory; this is quite fast, it usually takes under 40 milliseconds. The second version, supported by SuSE (kGraft) goes thread by thread and tries redirect the kernel calls to the new version. This can take minutes, but there is absolutely no downtime whatsoever. The solution, as agreed on during the Linux Plumbers conference in October: add both in the kernel.
I always wondered why the KSplice solution never caught on with Linux. And now I do have the answer I never looked for: In 2011 Oracle bought KSplice, and a bunch of patents as well. That pretty much explains why everyone got away from it, and left Oracle to its own devices.
Will this be useful for the normal user? No. Definitely not, uptime is not as important to the user; more important to users are huge steps up, not the sort of incremental upgrades that this new method of patching supports. Useful for servers? Definitely, yes. Tough and risky? Yes, indeed. But still, it’s an amazing feature and now it sort of justifies the move of the kernel to 4.0.