The Brain Fuck Scheduler v0.449 by Con Kolivas.

A single shared runqueue O(n) strict fairness earliest deadline first design.

Excellent throughput and latency for 1 to many CPUs on desktop and server
commodity hardware.
Not recommended for 4096 cpus.

Scalability is optimal when your workload is equal to the number of CPUs on
bfs. ie you should ONLY do make -j4 on quad core, -j2 on dual core and so on.

Features SCHED_IDLEPRIO and SCHED_ISO scheduling policies as well.
You do NOT need to use these policies for good performance, they are purely
optional for even better performance in extreme conditions.

To run something idleprio, use schedtool like so:

schedtool -D -e make -j4

To run something isoprio, use schedtool like so:

schedtool -I -e amarok

Includes accurate sub-tick accounting of tasks so userspace reported
cpu usage may be very different if you have very short lived tasks.

-ck
bfs: 0449 to 3.16 fixes.
bfs: Apply all 0449 pending patches.
[BFS] Refine locality to ranking and siblings/cache idle code.
[BFS] locality doesn't need to be kmalloc.
[BFS] Sync up try_to_wake_up* functions
bfs: Remove get_cpu()/put_cpu() in try_to_wake_up()
bfs: Make cpu_rq(cpu) a macro instead of a function call.
bfs: clean up wake_entry in task_struct
bfs: Refactory idle!=prev and next task code in schedule()

Just refactory the code and doesn't change the logic. Reduce a dupicated
condition sentence and some not operations.
bfs: Remove unnecessary resched_suitable_idle() in schedule().

When prev task is not the idle task and needs other cpu, the next
task will be returned from earliest_deadline_task() and will be
not the same task as prev task because the affinity.
resched_suitable_idle() will be called after prev != next check,
and resched_suitable_idle() call after needs_other_cpu() is not
necessary.
bfs: comment out unused evaluated stack variables.

Comment out evaluated cpu, rq and idle stack variables after context
switch, as they are not used in the rest of schedule(). Keep them in
source code so can be uncommented and use again.
bfs: Refactor rq dither calculation in schedule().
bfs: Refactory set_rq_task and inline reset_rq_task.
Merge branch 'ck-3.16' into pf-3.16