Thread Tools
Posts: 268 | Thanked: 1,052 times | Joined on May 2010 @ The Netherlands
The kernel-bfs project provides a bleeding-edge kernel with its main feature being Con Kolivas' BFS CPU scheduler. Kernel-bfs is derived from the kernel-power project and thus retains all features from it (e.g. overclocking, IPv6, USB Host mode, ..).

Note: The latest kernel-bfs is based on kernel-power v49 unstable, so you'll have to adjust your kernel profile to its new frequency scheme (if applicable). Also see kernel-power's thread.

The BFS CPU scheduler
The CPU scheduler is responsible for assigning the CPU's timeslices to all processes which are being ran on the operating system. By default, Linux uses the Completely Fair Scheduler (CFS). However, this scheduler is designed to scale to "monster proportion hardware that the common man will never see". This can result in sub-optimal results on machines with lower specifications, like your typical desktop, laptop, and our phone.

From the BFS FAQ:

What is it?

BFS is the Brain **** Scheduler. It was designed to be forward looking only,
make the most of lower spec machines, and not scale to massive hardware. ie
it is a desktop orientated scheduler, with extremely low latencies for
excellent interactivity by design rather than "calculated", with rigid
fairness, nice priority distribution and extreme scalability within normal
load levels.

Extreme scalability within normal load levels? Isn't that a contradiction?

For years we've been doing our workloads on linux to have more work than we
had CPUs because we thought that the "jobservers" were limited in their
ability to utilise the CPUs effectively (so we did make -j6 or more on a
quad core machine for example). This scheduler proves that the jobservers
weren't at fault at all, because make -j4 on a quad core machine with BFS
is faster than *any* choice of job numbers on CFS. See reverse scalability
graph courtesy of Serge Belyshev showing various job numbers on a kernel build
on a quad core machine. The problem has always been that the mainline
scheduler can't keep the CPUs busy enough; ie it doesn't make the most of
your hardware in the most common situations on a desktop!
The BFS FAQ also provides information on other typical questions. Please refer to it for more information on BFS.

Bleeding-edge features
Besides the BFS CPU scheduler, kernel-bfs incorporates several bleeding-edge patches. At the moment of writing, the following additional patches over kernel-power are included:
  • A set of patches from the -ck kernel patchset. These patches are designed to lighten the VM load and improve the desktop (i.e. non-server) Linux experience, with an emphasis on responsiveness. For example, one patch enables the kernel to identify large files that are unlikely to be fully cached in RAM. These files will then be the first thing to evict next time RAM is needed.
  • The BFQ I/O scheduler (experimental)
  • Support for the Reiser4 filesystem. This is an advanced filesystem with features like transparent lzo/gzip compression.
  • Backported UBIFS patches for the Linux 2.6.28 kernel
  • A few minor fixes/enhancements
  • Temporary fix for the bq27x00_battery/bme issue (see additional notes below)

Where to download
You can find kernel-bfs in Maemo's extras-devel repository. It is listed in the category "system" as "Linux kernel for BFS user". You can also install it via the terminal by executing
apt-get install kernel-bfs-flasher
Note: you can install only one kernel at the same time. Uninstall kernel-power via its menu entry before installing kernel-bfs.

If you want to use multiple kernels, either use uBoot or install kernel-bfs' multiboot package:
apt-get install kernel-bfs-bootimg
Toggling between different kernels causes Maemo to reboot spontaneously a few times. Just keep booting the kernel you want to boot, and it'll succeed after about three times. This is not an issue specific to kernel-bfs and can be experienced as pretty scary. Do not worry though, it will work.

Don't forget the meaning of "bleeding-edge". Having all kinds of goodies can be really great, but they are generally more unstable than widely tested and used software.
However, you do not need to expect any issues with using kernel-bfs.

Complementary products
Kernel-bfs can be complemented with some other software available to Maemo. This software includes:
  • Schedtool. This application allows you to alter a process' scheduling policy. The BFS scheduler introduces a two new scheduling policies: SCHED_ISO and SCHED_IDLEPRIO. SCHED_ISO allows you to run processes as an unprivileged real-time task, whilst SCHED_IDLEPRIO only schedules tasks when idle. You could for example add "sleep 5 && /usr/bin/schedtool -I `pidof hildon-desktop`" to a startup script, which can be a welcome bonus to kernel-bfs users.
  • Reiser4progs. Kernel-bfs has been compiled with support for the Reiser4 filesystem. However, kernel support by itself only allows you to mount Reiser4 volumes. To create, debug or fsck Reiser4 volumes you'll need this package. Creating/fscking Reiser4 volumes can then be done like you're used to (mkfs.reiser4 ...).
  • Fcam-drivers. This is the regular fcam-drivers package, but recompiled with kernel-bfs support. I'll try contacting the fcam-drivers package maintainer to see if the official package can be updated to include kernel-bfs support. Until then, you'll need this package.
  • Bleeding-edge wl1251 WiFi driver. The famous bleeding-edge wl1251 driver from lxp recompiled for kernel-bfs.

Additional notes
For those who seek the kernel-bfs build with the temporary fix for the bq27x00_battery/bme issue: go to this page. Make sure to read the warning at that page carefully. Whilst actively maintained, using that build is strongly discouraged.

Known issues
  • Flickering in the Opera webbrowser
  • Considerably slower networking speed
  • Haptic feedback acts up under heavy load

The kernel-bfs team consists of coreyoconnor, Tigerite, and iDont.

See also

Last edited by iDont; 2011-11-15 at 20:52.

The Following 45 Users Say Thank You to iDont For This Useful Post:
Posts: 14 | Thanked: 9 times | Joined on Aug 2011
Do I have to remove kernel-power before trying this?
Banned | Posts: 778 | Thanked: 337 times | Joined on Jun 2010
Originally Posted by awroax View Post
Do I have to remove kernel-power before trying this?

and oh, thanks.. and btw, compatibility issue with bleeding edge drivers *from wlan driver selector applet*
TMavica's Avatar
Posts: 2,003 | Thanked: 1,005 times | Joined on Apr 2010 @ Hong Kong
compatible with kernel power v49?
The Glorious Lady T.Mavica
Posts: 29 | Thanked: 9 times | Joined on Jul 2010
Originally Posted by TMavica View Post
compatible with kernel power v49?
install ok kp 48 but if you try on kp 49 dont get kernel bfs bootimg it will not work to boot in to kernel bfs it took me 5 times to get it to boot into it then went back to kernel 48 that took 3 times to get it up but all well if u dont use kernel bsf bootimg
Posts: 110 | Thanked: 127 times | Joined on May 2010
I'm curious to hear user experiences about this BFS kernel on N900, specifically if it makes keyboard input/shortcuts and the phone app buttons more responsive under load.

Until then, I'm a little hesitant to switch in the near-term (when upgrading to kernel-power-v49 I forgot the -flasher package, bricking my phone for a few hours)!

Somebody put my mind at ease
Posts: 183 | Thanked: 98 times | Joined on Mar 2011 @ Brisbane, Australia
when installing via FAM, it comes up with a conflicting package, stating it is kernel-power-flasher. so maybe it is not compatible with kernel-power
Posts: 29 | Thanked: 9 times | Joined on Jul 2010
boot in to kernel bfs ok after a few times trying playing around in with it every now and then you get app closing yet you have not even open the app up once you do boot in to bfs it will boot back into it ok but if wont to boot back kp 48 or maemo kernel or android it will take a few goes be for it will boot into them
Posts: 41 | Thanked: 13 times | Joined on Feb 2010 @ Australia
i have kp49 installed, i tried installing bfs,
upon reboot, uname -r shows its power49.
i dont have multiboot, is it a prerequisite?
Posts: 29 | Thanked: 9 times | Joined on Jul 2010
try apt-get install kernel-bfs-bootimg

The Following User Says Thank You to fraad For This Useful Post:

Thread Tools

Forum Jump

All times are GMT. The time now is 15:36.