Disclaimer:I am not responsible for whatever happens to your phone and if you are willing to try it,then go ahead
What is Project Engine Kernel?: Project Engine Kernel is a kernel that is optimised for performance and battery.It unlocks the full potential of the phone and keeps the phone as safe as possible from any unnecessary bricking and reboots.Compiling this kernel is to let users feel comfortable with the battery life and performance
Of course, your feedback, as always, are welcome and appreciated
The main features are the following:
- Linux Kernel 3.0.101 Sneaky Weasel
- Compiled with latest Linaro GCC 4.7 ARM Cortex A-9 Optimised with NeonVFP3 Technology Toolchain
- Hybrid Updates and Backports from Latest Linux Kernel
- Selinux Optimisations
- CPU boost driver
- Reduce logger to free more RAM size
- Low-memory killer ported from 3.4 Kernel(Credits to k2wl)
- Timer slack controller added with custom tuning available for users
- ARM Topology Optimisations
- Fast frandom Generator(Linked to dev/random)
- Dynamic FileSync Control by faux123
- Dirty-page writeback by Christopher83
- Cross Memory Attach
- CK3 Tweaks by Con Kolivas
- Increase default entropy settings
- Frequency steps to 1.5Ghz
- Ultra Kernel Samepage Merging
- SLQB Memory Allocator
- ARM bug fixes
- Proportional TCP Rate Reduction(Click here for more details)
Kernel Downloads for KitKat:
The Project Engine Website is coded and designed by Triprex and Ashish Bansal a.k.a mr.phantom
Click on the Baffin Folder and download the zip file:Click Here to Download
How to install the kernel:
1) Download the preferred kernel zip file to sdcard or external sdcard
2) Reboot to recovery mode
3) Flash the kernel zip file
4) Wipe cache and dalvik cache if you're coming from another kernel
5) Reboot the system
Changelog: These are all taken from git log because i have 100+ commits
d56fbf2 (HEAD, origin/cm11, cm11) Revert "thp: mremap support and TLB optimization"
* 8aa65eb sysctl: add support for poll()
* b0fc53c mm: restrict access to slab files under procfs and sysfs
* b5461b3 (master) thp: mremap support and TLB optimization
* 549fa86 lib/string: use glibc version
* f2a49e8 lib/memcopy: use glibc version
* 5d813c8 Proportional Rate Reduction for TCP.
* c9a43a9 lib: Improve the performance of string.c
* 29e62cc make register_disk() static
* 5988d2f power: Front buffer early suspend draw delay sysfs control
* 005d0ef Clean up codes
* e6905db ARM: Add optimised swahb32() byteswap helper for v6 and above
* 968129c Cleaning up residue files
* 547a1bf Added building scripts and update toolchain path
* faa65f4 Revert "fix linaro memset"
* d298a3d fix linaro memset
* 7ae0867 Revert "Update to 3.1.1"
* 82c7fe9 Revert "Update to 3.1.2"
* efbb39e Revert "Add some mfd drivers"
* 77c96b5 Modified VC version
* 4bee175 block: introduce the BFQ-v5r1 I/O sched for 3.0
* 437673c block: introduce the BFQ-v5r1 I/O sched for 3.0
* 439a713 Update defconfig to support exfat
* 1b5218c add exfat support
* 9b5c013 timer: optimize apply_slack()
* 9c9cf7c Revert "kernel: Prevent unnecessary rfkill event generation."
* 84a2dd8 Squashed update of BFQ-v6r1 to BFQ-v6r2
* 85c2b2a block: Squashed update of BFQ-v6 to BFQ-v6r1
c9402e4 Rebase back to BFQVR
* 4926547 Revert "Squashed update of BFQ-v6r1 to BFQ-v6r2"
* bc933b4 Squashed update BFQ
* 264d2ce ARM: disable preemption in machine_shutdown
* f863375 block: introduce the BFQ-v5r1 I/O sched for 3.0
* b595d07 block: cgroups, kconfig, build bits for BFQ-v5r1-3.0
* 65bd617 block: prepare I/O context code for BFQ-v5r1 for 3.0
* 21043f4 Revert "lib/string: use glibc version"
* b3a172d Revert "lockdep: remove task argument from debug_check_no_locks_held"
* 6d37bb9 Revert "lib/memcopy: use glibc version"
* 8486b2b lockdep: remove task argument from debug_check_no_locks_held
* ff0ef66 fixed autosleep and enabled it
* 84b58cb kernel/power/powersuspend: new PM kernel driver for Android w/o earlysuspend (faux123). Backported to 3.0.10
* 50d2250 Enable UNALIGNED_ACCESS for the new LZO algorithm to use. LZO decrompression is used on QCACHE so we benefit
* c79c949 kernel: Prevent unnecessary rfkill event generation.
* 51c7801 ext4: fixup 64-bit divides in 3.0-stable backport of upstream fix
* c0434dd ext4: use atomic64_t for the per-flexbg free_clusters count
* f7951a1 ext4: fixup 64-bit divides in 3.0-stable backport of upstream fix
* cc1ab54 kernel: Disabled Gentle Fair Sleepers for better performance
* 5c309ab lib/string: use glibc version
* c212f2c lib/memcopy: use glibc version
* e657a26 rwsem: check counter to avoid cmpxchg calls
* fc293ca rwsem: no need for explicit signed longs
* b4868a6 Revert "cpufreq: interactive: handle errors from cpufreq_frequency_table_target"
* 356ca4c cpufreq: interactive: handle errors from cpufreq_frequency_table_target
* b324d73 Update toolchain path for ARM-EABI-Linaro 4.7 toolchain
* 0ab6ac1 ARM: 7670/1: fix the memset fix
* eeb403a ARM: 7668/1: fix memset-related crashes caused by recent GCC (4.7.2) optimizations
* For more info,check out my github for commits
* Remove O3 Optimisations
* For more info,check out my github for commits
Credits and Thanks to: k2wl,pawitp,xenon92,akiratoriyama,CoolDevelopment, thewadegeek,Christopher83,mr.phantom,Galaxy Grand Hangout Group,faux123,boype,Linux Devs,Samsung,Kernel.org,Linaro GCC,Cyanogenmod,Linux Kernel Newbies,educk,AriesDevConnection Team
XDA:DevDB Information [DEV] [AOSP] [4.4+] Project Engine Kernel [CORTEX-A9], Kernel for the Samsung Galaxy Grand Duos i9082
Timer slack controller and dynamic management of the minimal timer slack value
The timer slack controller is a feature developed by Kirill Shutemov and it allows to set the minimal timer slack value for every process contained within a control group (cgroup).
A timer slack allows the kernel to manage processes wakeup requests at some future time.
Thanks to this feature, the kernel can set a specific timer slack for the involved processes, minimizing the number of wakeups and allowing a lower system's power consumption.
For further info: Timer slack for slacker developers
I also implemented a new feature in addition to the above one that allows the dynamic management of the minimal timer slack value.
So, it's possible to use different minimal timer slack value when the system is active and when has been suspended.
How to customize the dynamic timer slack controller feature:
Three new cgroup parameters are exposed inside each processes hierarchy contained in /dev/cpuctl path:
- timer_slack.min_slack_ns is the timer slack used when the system is active for the current processes hierarchy
- timer_slack.min_slack_suspend_ns is the timer slack used when the system is suspended for the current processes hierarchy
- timer_slack.effective_slack_suspend_ns is the timer slack currently used
At the moment, the values chosen and used by K^Kernel are the following:
- core processes (/dev/cpuctl), 0 ns when the system is active, 50000 ns when the system is suspended
- foreground apps/processes (/dev/cpuctl/apps), 0 ns when the system is active, 250000 ns when the system is suspended
- background non interactive apps/processes (/dev/cpuctl/apps/bg_non_interactive), 100000000 ns when the system is active, 250000000 ns when the system is suspended
1) By directly editing one of the file written above inside /dev/cpuctl and inside each hierarchy subfolder, by setting the preferred value (note that set value will be lost after a reboot/shutdown) 2) By using Terminal Emulator (note that set value will be lost after a reboot/shutdown)
- Open Terminal Emulator
- Run these commands to set the minimal timer slack for generic and core apps/processes
echo 0 > /dev/cpuctl/timer_slack.min_slack_ns
echo 50000 > /dev/cpuctl/timer_slack.min_slack_suspend_ns
- Run these commands to set the minimal timer slack for apps/processes in foreground
echo 0 > /dev/cpuctl/apps/timer_slack.min_slack_ns
echo 100000 > /dev/cpuctl/apps/timer_slack.min_slack_suspend_ns
- Run these commands to set the minimal timer slack for apps/processes in background and non interactive
echo 100000000 > /dev/cpuctl/apps/bg_non_interactive/timer_slack.min_slack_ns
echo 250000000 > /dev/cpuctl/apps/bg_non_interactive/timer_slack.min_slack_suspend_ns
LowMemoryKiller management of not killable processes
This feature allows to define processes and system processes white-lists filled with the preferred process names and to not be killed by lowmemorykiller, unless it is absolutely necessary.
This feature exposes four new lowmemorykiller parameters:
- donotkill_proc, is the flag to enable / disable this feature for the processes chosen by the user
- donotkill_sysproc, is the flag to enable / disable this feature for the system processes chosen by the user
- donotkill_proc_names, is the list of process names (comma separated) chosen by the user to be preserved from killing
- donotkill_sysproc_names, is the list of user system process names (comma separated) chosen by the user to be preserved from killing
When the lowmemorykiller needs to free ram, it will first kill the processes not included inside the two process name lists chosen by the user.
If there are no more standard killable processes, then it will be necessary to kill one of the processes included inside one of the two white-lists, to prevent system hangs, slowdowns, etc.
How to customize the white lists of processes to preserve from killing:
On K^Kernel the feature is enabled by default and the provided processes white lists are the following:
- donotkill_proc_names = "com.cyanogenmod.trebuchet,com.anddoes.launcher,co m.teslacoilsw.launcher,org.adwfreak.launcher,gtp.n extlauncher,android.inputmethod.latin,com.touchtyp e.swiftkey"
this means that Trebuchet Launcher, Apex Launcher, Nova Launcher, ADW Launcher, Next Launcher, stock keyboard and SwiftKey keyboard will be preserved from killing
- donotkill_sysproc_names = "android.process.acore,com.android.phone,com.bel.a ndroid.dspmanager"
this means that the system process, the phone process and DSP Manager will be preserved from killing
1) By using a customized init.d script (the custom value will be always restored after a reboot, if you don't format the system partition)
- Download the script named 80dnkp
- If the file has been saved with .txt extension (stock browser), rename it by removing the .txt extension
- Edit the file by setting your preferred status and processes list
- Copy the new file inside /etc/init.d
- Give the rwxr-xr-x permissions to the file (read, write, execution for owner, read and execution for group users, read and execution for others)
- Reboot 2) By directly editing the files inside /sys/module/lowmemorykiller/parameters (note that set values will be lost after a reboot/shutdown) 3) By using Terminal Emulator (note that set values will be lost after a reboot/shutdown)
- Open Terminal Emulator
- Run these commands if you want to enable the feature
# To enable this feature for the processes chosen by the user
echo 1 > /sys/module/lowmemorykiller/parameters/donotkill_proc
# To enable this feature for the system processes chosen by the user
echo 1 > /sys/module/lowmemorykiller/parameters/donotkill_sysproc
- Run these commands if you want to disable the feature
# To disable this feature for the processes chosen by the user
echo 0 > /sys/module/lowmemorykiller/parameters/donotkill_proc
# To disable this feature for the system processes chosen by the user
echo 0 > /sys/module/lowmemorykiller/parameters/donotkill_sysproc
- Run this command if you want to add, for example, Trebuchet Launcher (CM default launcher) and the default keyboard to the processes white list
Credits to:Christohper83 for this guide
I picked out the ones that is only able to used with this kernel so follow these steps to tweak the kernel because not all tweaks written by Christopher83 can work on our device
Here i will explain why i created a new thread.As you can see,my previous thread was supposed to be for Stock 4.2.2 kernel then i jumbled it all up with CM11 and stock 4.2.2 and so it is better for me to create a new thread for better management for my kernels
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?