Fedora 21 (currently Rawhide) is a very tempting distro to use and I’m imagining that many of you already having it. Fedora’s Rawhide editions typically (but not always) have the debug kernel options enabled, and that brings a very significant decrease in the performance of the system.
To see if your Kernel is a debug kernel you can print the DEBUG_SPINLOCK option. If it is not set, then the kernel is no-debug; If it is set then the kernel is debug-kernel.
For example in the latest 3 kernels currently on Fedora 21.
$ grep DEBUG_SPINLOCK /boot/config-3.15.0-0.rc7.git0.1.fc21.x86_64 # CONFIG_DEBUG_SPINLOCK is not set (no-debug kernel)
$ grep DEBUG_SPINLOCK /boot/config-3.15.0-0.rc6.git1.1.fc21.x86_64 CONFIG_DEBUG_SPINLOCK=y (debug-kernel)
$ grep DEBUG_SPINLOCK /boot/config-3.15.0-0.rc5.git4.1.fc21.x86_64 CONFIG_DEBUG_SPINLOCK=y (debug-kernel)
To always have a no-debug kernel you can..
1. Play With The Possibilities
Increase the maximum limit of Kernels from 3 to 5-6 and hope that one of them will be always a no-debug.
$ sudo vi /etc/yum.conf
2. Keep A No-Debug Kernel
You can also keep a specific kernel (a no-debug one) from being replaced.
$ sudo yumdb set installonly keep kernel-3.15.0-0.rc7.git0.1.fc21.x86_64 kernel-3.15.0-0.rc7.git0.1.fc21.x86_64 installonly = keep
This kernel will not be removed automatically by the “installonly” process and does not count towards the installonly_limit.
To delete the “installonly” key and revert the changes
$ sudo yumdb del installonly kernel-3.15.0-0.rc7.git0.1.fc21.x86_64 kernel-3.15.0-0.rc7.git0.1.fc21.x86_64 installonly <unset>
3. Add The Rawhide No-Debug Kernel Repo
You can add a repo that always offers no-debug kernels.
However these kernels might not work “out of box” on secure boot systems because they are built as scratch builds in Koji and they don’t get signed.
In any case, read more on Fedora’s Kernel Debug Strategy wiki