[Nexus S 4G Android Development] franciscofranco:
I've written many new kernel threads, so I'll just try to make this one simple, easy and light to read.

So, let me give you a little background on me: most of you don't know me as I only bought this device few days ago, but I'm a kernel dev for two other phones, the LG P500 and the Ideos X5. Worked on both .32 and .35 trees and my works became very popular, which can be seen by following the links in my signature - specially in the P500 community.

There are plenty of kernels to choose already, so why release another one? Simply because what I have to offer none of the other kernels had. What do I bring? Performance. How do I achieve that? Check the changelog and you'll understand...but not yet, lemme finish!

I have to say this: this kernel is based on KalimochoAz sources, so every changes up to his last pushed sources it's his job, so credits to him, I take no credit from his job.

I didn't start this kernel project for recognition or anything like that, I just want to share what I did for myself, maybe someone will find it useful :)

So let's get started, below you'll see what I changed on top of KalimochoAz source:

8th December

* Deep_idle code deleted, and re-added. Everything is exactly as Ezekeel has in his kernel, this might, or might not help with the data loss and whatever. If you still have problems please consider disabling deep_idle and see if it helps

* Deep_idle is off by default - changeable with NStools

* Calibrate.c reverted back to the .35 implementation

* Updated CRC32 library to the latest implementation directly from its creator

* Fsync disabling code deleted and re-implemented with a different implementation

4th December

Too many changes, so I'll be just brief and simple:

* CFS autogroup tweaks

* CFS optimizations

* Readahead values automatically calculated by the kernel for the optimal performance

* Several optimizations to lib files

* Added dm-cache (http://visa.cs.fiu.edu/ming/dmcache/)

* More stability

* Much more...

25 November

* Fsyncs disabled - more IO speed, more battery (less IO operations)

* Compiled with the optimized Mjolnir toolchain

* Added 1,2ghz step

* New default colors for the SAMOLED screens

* Cgroup: speed up access to cgroupfs mounted entries in /proc/mounts

* One or two more minor tweaks and optimizations

23 November

* No more BFS code and BFS builds. I want to make sure this is stable enough. If you want BFS compile it yourself. I hope this fixes the data/gsm drops

* Minfree settings unlocked forever

* Readahead value bumped to 1024

* BLN/touchwake fix

17 November

* Patched up to the latest deep_idle version from Ezekeel

* SAMOLED colors tweaked, should be a lot better now

* Few stability updates and reverts to ensure everything is up and running without issues

* Interactive governor added again

* Interactive patched up with around 10/15 patches

* Minor tweaks and optimizations

13 November

* Based on the latest testing builds, which includes:

* Some defconfig options change for a more leaner kernel

* Delete two cflags to ensure maximum Hummingbird performance

* Internal sdcard remount bug fixed

* Minfree settings unlocked by users demand

* Deep_idle implementation changed (it's the same that I used in the last testing version)

* Added latest deep_idle patch that when the phone vibrates it uses the TOP=ON idle state

* Removed obsolete screen dimmer

* Updated BLN to latest v9

* Lazy governor changes based on morfics lazy changes

* Remove Big Kernel Lock tracing

* Some stability patches from the kernel mainline

8 November

* PMEM disabled as herring doesn't use it - this way we recover 12,5mb ram

* Ext4 mounted with special flags directly on the kernel source - more performance without needing init.d scripts

* Writeback settings now working correctly and are not overwritten by the ramdisk

* Minfree settings are now correctly set and are not overwritten by the ramdisk

6 November

* Latest deep_idle bugfix from Ezekeel

* Added Ezekeel's custom_voltage mod. For more info about it visit the respective thread. Yes it's compatible with SetCPU, maybe with Proton too, I didn't test it

* Added back BLD, touch wake and screen dimmer

* Improved CRC32 algorithm - it's used for many kernel functions

* CFS version: Cgroups: introduce timer slack subsystem - Provides a way of tasks grouping by timer slack value. This functionality is useful in mobile devices where certain background apps are attached to a cgroup and minimum wakeups are desired

3 November

* Latest deep idle bugfix from Ezekeel

* Offering two separated downloads, one CFS and another BFS. Don't ask me which one is better, try it and see, I'll be really mad if I get questions like that

* Idle_stats show 0 in every field - don't worry about that, it happens because of my cpu_idle 3.1 backport, but I assure you deep idle is working. Again I'm not answering questions like "WHY IS IDLE STATS 0?!?!? HALP PLZ".

* 'screenoff_maxfreq' is disabled by default. If you want that behavior write this in the terminal: echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/lazy/screenoff_maxfreq

2 November

* Newest deep idle bugfix from Ezekeel

* Reverted back to CFS because stock users had mounting problems with the sdcard and some users had data/wifi drops and I don't want that

1 November

* First and entirely BFS kernel with the newest 0.413 version

* Optimized the tunable BFS parameters for extra interactivity and smoothness

* More debugging disabled - I'm pretty sure 99% of the debugging flags are now disabled

* All the latest bugfixes and implementations from Ezekeel, including live_oc up to 150, lazy maxfrequency_screenoff enabled by default and all the other small fixes to ensure maximum stability

* Small changes to the lowmemorykiller

* Added optimized RWSEM algorithm

* Added some minor improvements and tweaks

* Sorry devs that wanted logcat, it's still a module because I suspect I'll have to update this build again with some extra fixes from Ezekeel in a very near future thus not making much sense to release two kernels now, one with logcat on and other with it off because that takes time to compile. If you desperatly need logcat go to my .config and change CONFIG_ANDROID_LOGGER=m to CONFIG_ANDROID_LOGGER=y and recompile it

27 October

* Latest deep idle and live oc bugfix from Ezekeel - should fix that extra battery drain reported by some users

* Changed lowmemorykiller.c - minfree settings already incorporated in the file. Settings kanged from morfic's tweak file, thanks

* Add cleancache - driver to cache clean pages

* Fixed ext4 disk write performance regression

* Small power management fix to back off suspend if repeated attempts fail - avoid continually trying to suspend in situations in which a driver is repeatedly rejecting suspend or a pending wakeup interrupt is not handled, burning CPU in the continuous suspend attempts

* Lib file added for the users where BLN didn't work

* Logcat module added inside /system/modules. If you want to use logcat just load the module with insmod

24 October

* BLX added again by default and patched up to the latest fix from Ezekeel

* Deep idle patched up to the latest fix from Ezekeel

* Live OC added and patched up to the latest fix from Ezekeel. To overclock you need to do this in the terminal or in an init.d file: echo 110 > /sys/class/misc/liveoc/oc_value. The 110 value means that both cpu frequency and bus frequency will be increased by 10%. You can increase this value as much as you want, as long as you increase the voltages otherwise the device won't handle it, but that's obvious.

* Changed dirty_writeback values from morfic to increase smoothness

* Overclock frequencies removed. The device is fast enough with 1000,800,400,200 and 100 frequencies. If you want to overclock use Live OC, it's enough to make it fly

* Conservative governor tweaked - smooth as butter

* Removed a ton of debugging ****

* Deadline I/O scheduler made default - after much testing it seems to produce the best and more regular results

* Swappiness disabled

* For more information visit my github, this are the most important changes

21 October

* Latest Deep idle bugfix from Ezekeel

* sched: disable GENTLE_FAIR_SLEEPERS

* Remove few obsolete governors

* BLN fix for MIUI users - now it should be propely set and full working

* Just 3 more tweaks:

PM QoS: Correct pr_debug() misuse and improve parameter checks

mmc: core: put eMMC in sleep (cmd5) mode before suspend

vmscan: prevent background aging of anon page in no swap system

19 October

* UV **** is fixed, SetCPU and Proton should work fine now

* Config_HZ increased to 1000 by request of an user

* Small tweak to VR

* Compiled with special Cflags from netarchy

* Calibration tweaks for touchscreen from netarchy

18 October

* Update cpu freq. to allow UV interface - you can modify the voltages on the fly going to /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table with an easy layout

* Auto BLN added again - it works now out of the box without the need of an extra app

* Add Lazy governor by Ezekeel

* config edited again, removed alot of **** options that are not needed at all - this way the kernel is even leaner

* cpu_idle backport from 3.1 - maybe helps with the BSOD problem

* Tweaked VR scheduler to work better for flash devices like our Nexus

* Ext4 tweaks

* A lot of USB tweaked code

* More fs tweaks to decreast CPU usage on unecessary ****

* More TCP/IP tweaks

* vfs_cache_pressure -> 25

* dirty_background_ratio -> 60

* dirty_ratio -> 90

* vm_swappiness -> 30

* Sysfs interface for deep_idle created by Ezekeel was added. If you want to disable deep_idle run this command: echo 0 > /sys/class/misc/deepidle/enabled

* Screen refresh rate increased to 65hz, everything should be even smoother (thanks morfic)

* If you want more detailed information about all the tweaks added you can visit my github

----------

* No more debugging **** in the kernel. No logcat, no dmesg, no debug_kernel etc etc, this **** is clean on that logging stuff that only consume CPU cycles in the background

* CFS scheduler tweaked with custom settings

* dirty_writeback value increased from 5*100 to 15*100, reducing unnecessary I/O activity, thus releasing a few CPU cycles

* Deep Idle mod by Ezekeel (latest version)

* Few patches to lowmemorykiller.c hopefully to optimize memory usage

* Add VR I/O scheduler and made default. A lot of performance gain comes from this one.

* Also enabled BFQ scheduler to be an option with no-frills

* init/calibrate.c port from 2.6.39. Better loops per jiffy calculations

* vfs_cache_pressure 100->50

* Add Stochastic Fair Blue (SFB) network scheduler and make it default. This is a network packet scheduler, should make internet usage a lot smoother

* Changed TCP_congestion scheduler to TCP_Veno. TCP Veno module is a new congestion control module to improve TCP performance over wireless networks. The key innovation in TCP Veno is the enhancement of TCP Reno/Sack congestion control algorithm by using the estimated state of a connection based on TCP Vegas. This scheme significantly reduces "blind" reduction of TCP window regardless of the cause of packet loss.

* Tiny RCU is the default RCU engine. More explanation on this RCU here http://lwn.net/Articles/323929/

* Kernel compiled with -O2, meaning the code is more optimized instead of being compiled for size

* WiFi = PM_FAST in standby

* Optimized the config options for CFS Autogroup in the .config file, it should be perfect now

* Again more and more debugging disabled

* Obviously some minor changes and tweaking, but that can all be seen in my github below

https://github.com/franciscofranco/Nexus-S

Downloads: http://androtransfer.com/franciscofranco/Nexus_S/ (thanks sixstrings for the FTP hosting)

Please give me your feedback ;)

Enjoy