A New BFS "Smoking" Scheduler For Linux 3.3
Phoronix: A New BFS "Smoking" Scheduler For Linux 3.3
Con Kolivas announced this weekend the release of an updated BFS scheduler for the recently-released Linux 3.3 kernel. The new BFS scheduler is at version 0.420 and is codenamed "Smoking", with "a fairly large architectural change" since earlier versions of this out-of-tree kernel scheduler...
Where does this patch apply nowadays?
The regular kernel can do 0.33ms latency now. Where would this patch be applicable currently?
Mike's benchmarks say it all
I think those benchmarks really give a good indication of the current state of CFS vs BFS.
CFS is actually more fair now, at the cost of worst case latency. It does have higher overall throughput.
BFS is somewhat unfair (but still generally within a percent or two of being completely fair) and yet has much lower latency in some test (as much as 100% less latency). But the cost of achieving that low latency is hurting throughput and overall maximum number of threads.
So, use what's best for your workload. I'd say CFS has made many improvements, and is really a generally good scheduler.
Where as BFS is still the best scheduler if all you care about is low latency.
EDIT: I also just read an attached academic paper, and it confirms that BFS does give very good fairness in worse case type scenarios that aren't predictable. BFS does well in workloads where the caches can't be guaranteed to work, e.g. cache misses (sounds like Desktop workloads to me). Where as CFS does well in predictable throughput based benchmarks, and it scales to lots of cores. BFS theoretically wouldn't scale too far since it has a global runqueue.