Related to a question on which is better, the CFS or BFS scheduler:
Where do I find a list of which schedulers are available?
And how do I switch between them?
You will have to download, patch, and compile your own kernel because BFS is currently not part of the mainline kernel. The mainline kernel contains only one scheduler and is not meant to have multiple schedulers in the same codebase, or even on-the-fly switchable schedulers (it that's even something that could possibly be done). It would simply be too complicated, and not worth the effort.
So, in order to get BFS on your system:
The benefit of running BFS over CFS is very small though, especially with newer kernel versions. Keep in mind that CFS is constantly being improved.
The simplest way to install BFS in Ubuntu 10.10 is a PPA patch:
You can also install the patch using the Ubuntu Software Center as described in "What are PPAs and how do I use them".
The patch installs a new (patched) kernel, which will show up in the GRUB menu at boot with the suffix "-ck". Switch between schedulers by rebooting and selecting the appropriate kernel in the boot menu.
In my case, running Folding@Home in the background on a desktop PC (eight F@H threads on eight cores on an Intel i7 2600K), BFS is significantly better: Desktop response is snappier (not a big difference, but definitely noticeable) while the background F@H application is 20-25% faster.
In this scenario, dealing with interactive desktop use and long-running CPU-heavy background tasks simultaneously, CFS tended to leave one core idle for long periods at a time. BFS appears much better at using all cores 100% for background tasks while still providing fast response for interactive desktop tasks.
There is probably no single scheduler that will perform optimally under every possible combination of loads, but there are cases where BFS is better.
The below worked for me on Precise Pangolin (Ubuntu 12.04) YMMV, though.
BFS is Part of
Patch and install a new kernel with BFS. You have to use sepatare kernels, there is no way of using both in the same kernel image (especially to swith them on-the-fly)