The search for the perfect kernel scheduler is like searching for the Holy Grail. Linux 2.6 started with the O(1) scheduler, which solved a lot of issues for real-time processes. However, it didn’t scale to large NUMA (non-uniform memory access) machines. The Linux kernel can scale to 4096 processors. Not all the processors have to share the same bus architecture and memory. Rather, a machine could consist of multiple 16 to 24 processor systems connected by a high-speed bus. This is the world of NUMA, as each system has its own memory that can be shared with other systems. The Completely Fair Scheduler (CFS) scaled to large NUMA machines, but created problems with systems that had less than 16 cores. CFS also scales well to the high core count of new GPUs (Graphic Processing Unit), which can also run non-graphical processes. For mobile devices with less than 16 cores, it creates problems with heating.
CFS trades higher kernel overhead for maximizing interactive performance. On mobile devices, the higher overhead means running the processor at higher speeds, which builds more heat. Heat is the enemy of every mobile device.
For a bit of background, Con Koliva developed the Rotating Staircase Deadline scheduler, which inspired Ingo Molnar to develop CFS. Seeing the problems with CFS, Con Koliva designed BFS (Brain Fucked Scheduler), an expression of how he felt about writing yet another scheduler. Con Koliva designed BFS for those devices with less than 16 cores, which, to the best of my knowledge, covers all mobile devices, and older non-mobile desktops.
Although it first appeared in September of 2009, there was not an immediate rush to switch from CFS to BFS. Android has a development branch that includes BFS. It was not included in the Froyo (Android 2.2) release, as a customer survey did not show any differences. At this time, only Zenwalk 6.4 and PCLinuxOS 2010 use BFS as the default scheduler. As it matures, you may see BFS appear in other mobile projects, such as MeeGo.
As I mentioned in the Fedora 13 review, the HP laptop used for testing actually halted due to overheating of the CPU. A subsequent discussion in the comments pointed to CFS as the culprit. In running my tests with PCLinuxOS 2010 for the xfce and LXDE desktops, the fan was amazing quiet. Playing a DVD movie didn’t even result in the fan starting. In my opinion, BFS does make a difference. For those of you who are having laptop cooling issues, PCLinuxOS 2010 is a definite alternative. I wouldn’t hold my breath about BFS appearing as an alternate scheduler in the official kernel source tree. Personally, I see it, or a variation, becoming the standard scheduler for mobile devices, and, possibly, embedded Linux.