Ubuntu – Why aren’t the BFQ and BFS schedulers included in the official Ubuntu kernel


Yesterday I read an article on speeding Ubuntu up. One suggestion in the article was replacing the default I/O scheduler with BFQ, which according to the article is optimized for interactive performance.

A similar article points out the advantages in desktop performance when using the BFS process scheduler.

Both schedulers are included in numerous patchsets and alternate kernels that are known to increase desktop interactivity and performance (e.g. linux-pf, liquorix-kernel and linux-ck).

So my question is: Given how Ubuntu is striving for a great desktop experience, how come the non-server builds of the OS don't come with these schedulers when they've been proven to be better in terms of interactive performance?

More information on the two schedulers may be found here:

Best Answer

Quick answer :

  1. Both schedulers does not work at all or work well for all the supported platforms of Linux (frequency, architecture, resource consumption, ...)
  2. It seems that Torvalds simply does not want to support more than one scheduler

Explanations :

Since the schedulers are alone initiatives (aka not supported by the kernel) then the mere fact for including it would means to focus people in those schedulers (security patch, maintenance patch, speed up adaptation to new kernel releases, ...). It means financial investment for a project that is still unsure about it's existence in future.

They are still quite young. The best example is what is explained on the FAQ of BFS at "How scalable is it?".

Behind the lines of this part tells us that BFS has performance issues when you have a lot of logical CPU. This single point takes out for servers and high end PC (the number of 16 is given so it means that a simple 1000 USD server would have performance troubles with this). So you exclude Ubuntu Server of this patch, you also exclude physical bi CPU configurations that now easily reach this number.

Ubuntu can't reach masses if they use another scheduler. Scalability wins over performance.

As always, with many "if" ... :

  • If every user of Ubuntu is a desktop user
  • If every machines of each Ubuntu user are the correct pc for the schedulers

In fact the best approach is the current one : Let the user apply the schedulers they want if they have the hardware and are interested in it.

Applying it may work better for some during some time (because, As I've said, the scalability is a big issue and the future will increment the number of processors). But will give serious troubles to others.

Extra Sources :

The link may not stay forever, here is an article I found about BFS on h-online. It's the most official I've found. However if you google hard you may find the real statement. I think it may be on kerneltrap.

See third paragraph of the phoenix title of the article. I'll quote it here in case the link dies :

At present, the integration of BFS into the Linux main development branch seems very unlikely, as Linus Torvalds has already made it clear that he doesn't want to maintain multiple schedulers. In addition, the Linux distributors tend to prefer a single kernel image that achieves optimum performance on a wide variety of systems without requiring special configuration. It could be that the CFS developers will improve their scheduler in the areas covered by BFS – a bonus for the user community.

Linus Torvalds Thread about it.