[Nexus 9 Original Android Development] bbedward:
I'm not even sure this 0 build works I may have to package an entire ramdisk and quit trying AnyKernel because of all the different 5.1 and 5.0 stuff going on here.

But the point is to add things that matter and things that make a difference. You probably don't care about having 3 alternative random number generators built in the kernel, or about having slightly more optimized memcpy/memmove operations. Not that those things aren't necessarily good, but what's the difference you'll notice with and without those - nothing :p on the other hand maybe you care about real performance and battery improvements, fast USB charging ,upstream stability, etc, etc.

This is where Zen comes in. Cut out everything except what matters. BFS helps me make a real difference in the performance and battery department.

How does it benefit performance? Well the stock scheduler has lots of overhead with 1 run queue per CPU, huge balancing algorithms, huge fairness calculation algorithms, many tunables. Stuff that's probably pretty essential if you have 64+ logical CPUs where you need to have the separate runqueues to avoid contention issues that come from such a setup. BFS chooses 1 run queue shared by all the CPUs. By design it is able to be fair without big balancing algorithms, interactive without focusing on countless priority calculations, and perhaps most importantly if you run 4 jobs on 4 CPUs it will keep those CPUs busy with a consistent load. On the stock scheduler they may tell you to run -8 or so jobs on a 4 CPU system to keep things busy.

You see a focus on a power-aware CPU scheduler lately as well. What they are doing to achieve that is keep jobs on the left most CPU cores keeping the other ones idle more. On BFS, these power aware things are not applicable because it requires no such load balancer. BFS uses sticky tasks to keep jobs on a CPU which aids in allowing other CPUs to idle more frequently. So when you see 1 CPU get busy 1 CPU will scale in the CPU frequency driver rather than unnecessarily scaling multiple CPUs after balancing.

Anyway, why doesn't google use it if it's so good - because it isn't mainline essentially. It will never go mainline unless they add a pluggable CPU scheduler interface (not in the foreseeable future) because it isn't applicable for a wide variety of systems (specialized for light-NUMA desktop type workloads). Google has had it in an experimental android branch before, but going so far away from mainline takes away a big aspect of support that you get from staying mainline (you get a bug and you can't rely on mainline support)

Why have no other kernels implemented it if it's so good? (They have now, since I brought it here and on the N6) probably because they didn't think it was worth the time to bring back the newest implementation to 3.10 or they didn't have the know how (the official 3.10 -Ck BFS patch is quite old, and broken with suspending - which is why I started the back port/sync process to begin with) so maybe others tried it and gave up.

Anyway the difference between a non-zen nexus 6 and a zen nexus 6 is a noticeable one. It's the only one I believe makes a noticeable performance difference (without over clocking or ramping up frequency scaling). Many claim it makes a noticeable battery difference too, without sacrificing touch boost or killing frequency scaling (in other words, it isn't making lag for better battery life)

Anyway enough rambling. Its coming here to the nexus 9 because I want to continue to support 2014+ nexus devices with my kernels and perhaps one or two other flag ships (I touched the S6 but there's one kernel per variant, their default config is incomplete, typical Samsung mess)

Also there will be a 100% free and open source GPL zen app. Which I think has a brilliant framework and a lot of potential. But that's limited by my time currently.