First off, big thanks to Faux123. This is based on his repo with a few tweaks of my own. I'll be adding more as we go on. And of course, he's welcome to pull any patches he likes from my github.
Changes:
Added zram compressed swap support. I'll attach a script to turn it on and one to see what its status is. It's not like the older ramzswap that requires a special tool, everything is done through sysfs now. Very nice.
Added zcache compressed cache. This is a bigger win IMO, it compresses any compressible data in the cache. This means you can keep much more data in cache, which means you have to read it in from slow flash much less often.
Tweaked the low memory killer to take swap space into account, but only some of it.... This prevents swap thrashing while the system tries to kill processes and free up ram/swap. I also suggest using something like AutoKiller to set the levels to the best performance for your workload. We all run different apps and such, and that can affect how these things work for each user. There is no setup that is going to be perfect for 100% of users. Speaking of AutoKiller, I have found the advanced tweaks to help a fair bit as well. Don't use the memory management one, it overides your settings for things like swappyness. And the IO Scheduler doesn't do anything as we aren't using cfq. Unless you turn on cfq...
On Swap and compression:
While badly configured swap can slow things down, it's far more complex than people think. It also frees up RAM that's not being used frequently for apps that are. So your system can more efficiently use the resources it has. While compression does use some CPU time, our dual core 1Ghz+ CPUs can compress/decompress REALLY fast. Far faster than reading from the flash storage. In theory, this can affect battery life, though I haven't seen any significant issues from it.
Q: But we have 512M, that's a LOT!
A: Well, kind of... Not all of it is accessible to the kernel for running apps. 128M for the GPU, some for the cameras, wifi, etc... In the end, a little less than 400M is available. Then you have to add in system overhead from the kernel itself, Android's OS processes, etc.. That is quite limiting, IMO, so using it more efficiently is important to me.
Q: I don't like compression/swap.
A: Then don't run this kernel.
Download (OTA) v1.1: http://goo.gl/2dCK8
Scripts: http://goo.gl/M4SzG
Changes:
Added zram compressed swap support. I'll attach a script to turn it on and one to see what its status is. It's not like the older ramzswap that requires a special tool, everything is done through sysfs now. Very nice.
Added zcache compressed cache. This is a bigger win IMO, it compresses any compressible data in the cache. This means you can keep much more data in cache, which means you have to read it in from slow flash much less often.
Tweaked the low memory killer to take swap space into account, but only some of it.... This prevents swap thrashing while the system tries to kill processes and free up ram/swap. I also suggest using something like AutoKiller to set the levels to the best performance for your workload. We all run different apps and such, and that can affect how these things work for each user. There is no setup that is going to be perfect for 100% of users. Speaking of AutoKiller, I have found the advanced tweaks to help a fair bit as well. Don't use the memory management one, it overides your settings for things like swappyness. And the IO Scheduler doesn't do anything as we aren't using cfq. Unless you turn on cfq...
On Swap and compression:
While badly configured swap can slow things down, it's far more complex than people think. It also frees up RAM that's not being used frequently for apps that are. So your system can more efficiently use the resources it has. While compression does use some CPU time, our dual core 1Ghz+ CPUs can compress/decompress REALLY fast. Far faster than reading from the flash storage. In theory, this can affect battery life, though I haven't seen any significant issues from it.
Q: But we have 512M, that's a LOT!
A: Well, kind of... Not all of it is accessible to the kernel for running apps. 128M for the GPU, some for the cameras, wifi, etc... In the end, a little less than 400M is available. Then you have to add in system overhead from the kernel itself, Android's OS processes, etc.. That is quite limiting, IMO, so using it more efficiently is important to me.
Q: I don't like compression/swap.
A: Then don't run this kernel.
Download (OTA) v1.1: http://goo.gl/2dCK8
Scripts: http://goo.gl/M4SzG
Code:
OTA Changelog:
v1.1.1:
* Fixed Haptic Vibration
* Fixed some config settings
v1.1:
* Updates from faux123 to fix LG crap code
* Increase voltages and enable 1.5GHz
v1.0.3:
* Added low memory killer changes back in.
* Fixed Haptic Vibration
v1.0.2:
* Correct mis-applied zcache patch.
Last edited: