Posted
by
CmdrTaco
on Tuesday August 31, 2010 @03:10PM
from the stacking-your-nines dept.

An anonymous reader writes "Ksplice, the technology that allows Linux kernel updates without a reboot, is now free for users of the Fedora distribution. Using Ksplice is like 'replacing your car's engine while speeding down the highway,' and it can potentially save your Linux systems from a lot of downtime. Since Fedora users often live on the bleeding edge of Linux development, Ksplice makes it even easier to do so, and without reboots!"

Great job reading the article... "The service for Fedora and Ubuntu Desktop is free of charge. For other distributions, the subscription fee starts at $3.95 per system a month, after a 30-day free trial."

And frankly, I'd still feel a little more comfortable with a reboot, since I'd worry a bit about state consistency of kernel and client processes.

This in theory can be a problem, but each kernel update has to be prepared individually, so someone (once again, this is the theory) has looked at the kernel modifications and made sure it won't cause problems. This isn't an automatic thing that can work with any kernel (don't try to use it to go from a 2.4 kernel to a 2.6 kernel), and if there are major changes, say a new scheduler or something, then someone needs to write code that will move the data from the old scheduler to the new scheduler.

Mainly its used for security updates which are probably a line of code changed, or a function changed, and there is no difficulty with inconsistencies (unless maybe someone is in the middle of trying to exploit the buffer overflow, but they avoid that problem by making sure no threads are in the functions that are being patched). This is my understanding of how it works.

From what I can tell, ksplice does not require a software restart or hardware restart. This isn't explicitly stated, but it is implied by the usage instructions: http://www.ksplice.com/uptrack/using [ksplice.com]

If your server only takes a few minutes to reboot, then I can see why you wouldn't be so concerned about having to reboot for kernel upgrades. We have Oracle and Sybase database servers that take over 90 minutes to start up all their services (these are 16 and 32 core machines) and not having to reboot them for kernel updates would be a huge win for us.

Processes sleep in a way that can't be interrupted in some cases. For instance, when writing to a file. The logic of that that if it was possible, the application would have to retry the interrupted call, and since a write is assumed to be uninterruptible nobody tries to check if it was interrupted.

This ocassionally creates problems, like when something in the disk subsystem goes wonky, and a write call never returns, leaving the process sleeping and unkillable forever.

There was a patch [lwn.net] to create a killable state, that allows fatal signals to be processed in such cases, since the process would die immediately anyway. I'm not sure how fully is this integrated, but while I remember unkillable processes in the past, I don't think I had any in the last couple of years.

I recall seeing this problem with NFS some years back - don't know if it's still the case. The clients with open connections would freeze solid if the server abruptly dropped the connection, for whatever reason, and would staythat way until either forcibly rebooted or until the server reconnected.I think that the server could be mounted in a "soft" state to prevent that but was told there was too much of a performance penalty.

I know Windows 7 has improved startup times dramatically over XP, and that's great. My father has a Windows 7 machine, my mother does, several friends do, and I like it. It does start fast.

But, no, to answer your question, startup takes nowhere near a minute in Mint. Probably closer to the 15 seconds you report from Windows 7, though I'll admit I haven't timed it with a stopwatch so I can't give you an exact time.

"Boot" and "reboot" are different terms, though.

So, to be clear: My "under a minute" was from the moment I told Mint to reboot to the moment I'm back in a fully operational desktop again with my basic programs running (Firefox and Thunderbird). So that figure includes powerdown, POST, OS startup, login to my primary account, launching my programs, and being back where I started when I started telling it to shut down.

And it's probably closer to 40 seconds, if I had to guess at a more precise time. But that's a guess. And Windows Seven might still beat the pants off it, and if it does I'm happy for you if that sort of metric is important to you. Personally, I'm happy with anything pretty much under a minute or so.

The reboot-to-patch-everything treadmill really sucks, and I'm glad it's largely behind us as a computing community across most personal computing platforms.

It's also great that everyone (on all platforms) has put so much work into reducing boot times for those times when it is necessary (or safer) to just reboot rather than trying to patch-in-flight.

Did the Lisp machine let you change the hardware running those lisp expressions? No?

Not exactly, but with a Lisp Machine everything other than the hardware was modifiable. The entire run-time environment was written in Lisp. The Squeak VM includes things like the frame buffer, for example, which are statically compiled.

SqueakNOS is more impressive than Squeak, because everything from the interrupt handler layer and up is written in Smalltalk and can be modified. This is pretty close to being equivalent to a Lisp Machine. The only bits you can't modify at run time are the bits that are written in assembly and set up the interrupt vectors, and a few bits of the VM that are statically compiled.

For a modern production system that does this incredibly well, take a look at the OpenFirmware implementation used in the OLPC machines. They boot to an interactive FORTH environment that lets you modify everything in the boot firmware.

The thing that makes ksplice interesting is that it does it in C. As I said in the post that was marked flamebait, this is a pretty trivial problem in late-bound languages, but a general solution in C is impossible. A specific, good-enough, solution is therefore interesting.