What are the advantages of bfs over cfs and are there any benchmarks to see if there are any real performance gains?
There is an excellent PDF document here, which explains in detail the differences. It also does several tests that show in graphs how both behave under certain conditions.
Here is a small document from the creator of BFS: http://ck.kolivas.org/patches/bfs/bfs-faq.txt about why he created this scheduler.
But the main differences are:
BFS is better for interactive tasks that block on I/O or user input
BFS is generally a bit faster but a bit more inconsistent
BFS in low latency apps will show a big improvement over CFS (Like video apps)
BFS has much less "spikes" in cpu usage
CFS is generally more consistent for a consistent performance
CFS is better for batch processing that is CPU bound
CFS in multi cpu intensive tasks + multiple tasks will have better performance than BFS
CFS has more spikes than BFS but it works to be more fair between tasks
For the normal user, BFS might give a "better" performance but it will give less performance if you do a lot of batch process.