|| ||Con Kolivas <firstname.lastname@example.org> |
|| ||email@example.com |
|| ||[ANNOUNCE] BFS CPU scheduler v0.406 for 2.6.39 |
|| ||Sun, 5 Jun 2011 16:20:07 +1000|
|| ||Article, Thread
People have requested an official BFS announcement separate from the -ck
announcement, so this is to officially announce the first stable BFS CPU
scheduler for 2.6.39.
The major changes going into the 0.4x BFS version are a complete rework of
busy CPU balancing to be even further simplified. Now it just flags a task as
"sticky" if it is descheduled while still seeking further CPU time. Only one
sticky task per CPU exists. If it is found to be sticky, it is heavily biased
against moving to a different CPU. If a scaling CPU frequency governor is in
use, sticky tasks will actually not move to a throttled CPU at all, instead
preferring to wait till the CPU they came from is available again. As CPU
frequency scaling is per-cpu, and BFS is a global CPU scheduler, BFS was
previously unable to make the most of dynamic scaling and the turbo modes of
newer CPUs. This change substantially improves BFS for both of those. A long-
standing bug which made low HZ configurations have poor latency behaviour was
also found and addressed. With this change, throughput was found to further
improve, so latency targets for BFS were improved to be the same baseline
default 6ms regardless of the number of CPUs.
A few of the highlights where BFS performs particularly well came out in
benchmarking on a 6x AMD machine. (This is not meant to be a claim that BFS is
better on all workloads and all hardware, but demonstrates it has advantages
in certain workloads up to reasonably powerful commodity hardware).
Full results are here:
(desktop = 1000Hz + preempt, server = 100Hz + no preempt):
The highlight graphs on AMDx6 (obviously cherry-picked!) follow:
Throughput with make -j6 is: thoroughput-j6 [sic]
Throughput with x264 ultrafast is: thoroughput-ultrafast
Latency in the presence of x264 ultrafast is: latency-ultrafast-log
Thanks to Serge Belyshev for 6x results, statistical analysis and graphs.