[Samsung Galaxy Nexus] EniGmA1987:
Seems my last post got lost pretty quickly with no one actually seeing it, so Ill add to my request in hopes that more people will be interested in also having it:

Could you please look into adding the ktoonservative governor to this kernel? I have been using it on my Nexus 10 (manta) and it is by far the best governor around, and if you implement this then yours would be the first kernel with this governor in it on the Galaxy Nexus (although I did ask Tiny to add it to his kernel too a little while ago, but doesnt look like it will happen soon if at all) . I think this governor deserves a place in the kernel because it has an entirely different base than nearly all other governors we can choose from. There are lots of OnDemand and Interactive based things out there, but this is one of the only governors based on conservative. Yet it also includes an advanced boost pulse like Interactive to give fluid animations and transitions even though the governor tries to keep the CPU speed down to save on battery. Having this governor choice would bring a very unique and new choice to the kernel.

Here is the developer's github:

https://github.com/k...ab=repositories

I *think* this is the actual code for the governor itself. Not completely sure since I am not a kernel dev, but it looks right to me:

https://github.com/k...toonservative.c

Ktoonservative performs very well in general usage such as moving around the phone and browsing as well as gaming because any time you need to move around and either scroll a webpage, open the app drawer, or change a homescreen then you have a boostpulse like Interactive has. So the speed is high for any actions that will be doing some movement. THe boost pulse works better than Interactive though because you can set the GPU to boost as well. Since many things are hardware accelerated and use the GPU for animations, this greatly helps how people see the smoothness of their home screens and apps. The duration of the boost can also be controlled. By default the boost is for about 1 second, but the user can choose to have it as long or short as they want. I usually modify the boost time to about a half second since that is long enough to cover nearly every transition animation without staying on so long as to waste battery past the animation time when it isnt needed.

The governor is based on "conservative" so it always tries to keep the CPU speed as low as possible while still being fast enough to get the task done well enough. This helps battery life because it wont ramp up the speed excessively during background tasks and such. Normally the weakness of such governors is perceived smoothness because of trying to keep the speed lower, which is fixed completely by the addition of the boost pulse stuff. The speed on a conservative based governor will only go up 1-2 frequency steps per sample period, if the load is high enough, until it reaches the point where the speed is enough to complete the task efficiently enough without a big load to the CPU. And as with conservative, as soon as the task/load is gone the speed scales down very quickly (4-5 steps per scale down) once again to save battery. This governor will utilize all available frequency steps on the phone and will not simply jump between the highest and lowest, or jump to some generic high speed once it gets a decent load on the CPU. This governor goes about raising the speed methodically until it gets fast enough without being so fast as to be wasteful.

The governor also adds hotplugging to help try and save battery. Hotplugging a core when it is not needed, such as when the phone is sleeping saves battery because there is both less voltage being sent through the processor but also there is less capacitance because there arent so many transistors and such that are active. With the modern C states that we have it doesnt save a ton of battery, but it does help save 20-40ma of draw on average. This can extend idle life by an hour or two depending on how big your battery is. However, for those people that have "bad luck" with hotplugging governors or just plain dont like them, there is a tunable that the user can set to completely disable hotplugging for this governor if they wish.

So the basics are:

Tries to keep speed only as high as is really needed without going over

boost pulse of CPU and/or GPU to give fluid animations and transitions

hotplugging

Thanks for taking the time to consider this governor to be included in your kernel.