January 21, 2010

openSUSE 11.1 Kernel configured with no preemption


While writing a blog on the Completely Fair Scheduler (CFS) http://bit.ly/8yBuVp, I was going through the kernel code to find the configuration options that had an impact on the scheduler, and then checking how various distributions set the options. To my surprise, I found that openSUSE 11.1 set the option CONFIG_PREEMPT_NONE, which turns off kernel preemption. I checked five other Linux distributions, and the CONFIG_PREEMPT_VOLUNTARY option was set.
Kernel preemption allows a kernel process to be preempted. While no preemption is OK for servers, it impacts on the smoothness of desktop applications that involve streaming media. For example, videos and sounds are jerky. With preemption, there is less latency, which smooths out video and audio. Without preemption, attempting to tune CFS to solve the latency problem is an exercise in futility.
I recompiled the kernel as CONFIG_PREEMPT_VOLUNTARY, and the desktop is a lot smoother. Unfortunately, the only solution is to build a new kernel. As soon as I have time to install 11.2, I will have to check the kernel configuration.

Click Here!