[Galaxy S III Original Android Development] forkbomb444:
Hi,

There are some new kernel changes that are under review. They've been reported to provide pretty impressive improvements, so I figured I'd provide this as a sneak preview. Thanks to [MENTION=5153662]Android-Andi[/MENTION] for assembling these changes.

The changes are this one and these two.

These changes are included in 20160613 and newer. You don't need this kernel anymore!

To try them out:

the kernel - flash this (it contains the changes)

To switch back, just flash a new CM nightly/reflash the nightly you're on or flash this zip.

Summary of the changes:

kernel/samsung/smdk4412:
34a1ecb zram: fix possible use after free in zcomp_create()
e4148fb Remove ENHANCED_LMK_ROUTINE added by Samsung
feffb1f lowmemorykiller: fixes for new oom_score_adj
7799ece lowmemorykiller: maintain LMK rbtree with signal->adj_node
7ddcef9 drivers:lmk: Fix null pointer issue
1e9029d drivers:lmk: Fix double delete issue
1b416d9 staging:android:lmk: read rb tree root with spinlock
747dc8b staging: android: lowmemorykiller: select a new task to kill
bc71603 staging: android: lowmemorykiller: implement task's adj rbtree
0dce847 fs: avoid adding non-thread-group task to LMK rbtree
4902ad0 kernel: avoid adding non-thread-group task to LMK rbtree
f85f7c9 staging: android: lowmemorykiller: fix build breakage on kernel 3.0
227b5ef lowmemorykiller: make default lowmemorykiller debug message useful
cb5471a staging: android: lowmemorykiller: Change default debug_level to 1
7b6bec5 staging: android: lowmemorykiller: Don't count reserved free memory
337c493 staging: android: lowmemorykiller: Add config option to support oom_adj values
dc744fb Staging: android: lowmemorykiller.c
8b2bf71 staging: android, lowmemorykiller: convert to use oom_score_adj
cf64fcf staging: android/lowmemorykiller: Do not kill kernel threads
5fd18ff staging: android/lowmemorykiller: No need for task->signal check
325866e staging: android/lowmemorykiller: Better mm handling
de3cf80 staging: android/lowmemorykiller: Don't grab tasklist_lock
3abe1a4 Staging: android: fixed 80 characters warnings in lowmemorykiller.c
74b21a6 i9300, i9100: enable LZ4-backed zRAM
9d2e392 zram: default to LZ4 compression if LZ4 is enabled
d6cc98c mm/vmscan: Add #ifdef around "WasActive page flag"
1e291c9 mm: implement WasActive page flag (for improving cleancache)
c72e09b mm: remove compressed copy from zram in-memory
128faec staging: zcache: fix cleancache race condition with shrinker
912b213 lzo: properly check for overruns
579b11b lib/lzo: huge LZO decompression speedup on ARM by using unaligned access
39a4e24 lib/lzo: Update LZO compression to current upstream version
25925d6 lib/lzo: Rename lzo1x_decompress.c to lzo1x_decompress_safe.c
4698b1b mm: Need page_swap_info() helper method from upstream
a6ce37f mm: swap: don't delay swap free for fast swap devices
d997b41 mm/zsmalloc: allocate exactly size of struct zs_pool
f2eb4e8 zsmalloc: correct fragile [kmap|kunmap]_atomic use
d15bf00 lib: lz4: Set ARM_EFFICIENT_UNALIGNED_ACCESS
ea34676 zsmalloc: merge size_class to reduce fragmentation
86d495b zsmalloc: simplify init_zspage free obj linking
cf8ced6 zcache: Use zs_get_total_size_pages
032a891 zsmalloc: change return value unit of zs_get_total_size_bytes
2cff8e1 zsmalloc: move pages_allocated to zs_pool
eb69dce crypto: lz4,lz4hc - fix decompression
af35859 crypto: add lz4 Cryptographic API
e587fc7 staging: zsmalloc: add mapping modes
1460992 zcache: Fix zsmalloc include
a51e432 staging: zsmalloc: zsmalloc: use unsigned long instead of void *
8534495 lz4: add overrun checks to lz4_uncompress_unknownoutputsize()
4d43c9b lz4: fix another possible overrun
69a113a lz4: ensure length does not wrap
fab4f77 lz4: fix compression/decompression signedness mismatch
fcf0112 lib/lz4: correct the LZ4 license
42ebaa6 lib: add lz4 compressor module
ae59e75 lib: add support for LZ4-compressed kernel
3948a0f decompressor: add LZ4 decompressor module
1f82667 zram: fix incorrect stat with failed_reads
075241c zram: replace global tb_lock with fine grain lock
8709b6b zram: use size_t instead of u16
517fd67 zram: remove unused SECTOR_SIZE define
2b13c20 zram: rename struct `table' to `zram_table_entry'
187a902 zram: avoid lockdep splat by revalidate_disk
9a9f224 zram: revalidate disk after capacity change
c475acf zram: correct offset usage in zram_bio_discard
e1a61f0 zram: support REQ_DISCARD
35f7bb0 zram: use scnprintf() in attrs show() methods
91328ed zram: propagate error to user
4f995e6 zram: return error-valued pointer from zcomp_create()
0b609bd zram: move comp allocation out of init_lock
d91c97b zram: add lz4 algorithm backend
6182c01 zram: make compression algorithm selection possible
e6e0680 zram: add set_max_streams knob
7db9d9d zram: add multi stream functionality
21d7e34 zram: document failed_reads, failed_writes stats
0379e61 zram: factor out single stream compression
1822109 zram: use zcomp compressing backends
414bf1c zram: introduce compressing backend abstraction
64d8df8 zram: delete zram_init_device()
c20ebd7 zram: move zram size warning to documentation
0af6b10 zram: drop not used table `count' member
1fd5551 zram: report failed read and write stats
9ef962e zram: remove zram stats code duplication
6ab83f3 zram: use atomic64_t for all zram stats
1d81955 zram: remove good and bad compress stats
25a1032 zram: do not pass rw argument to __zram_make_request()
3b43eae zram: drop `init_done' struct zram member
0378177 zram: avoid null access when fail to alloc meta
8b555b9 zram: remove zram->lock in read path and change it with mutex
cdbd2a6 zram: remove workqueue for freeing removed pending slot
03ea8b5 zram: introduce zram->tb_lock
4d998ac zram: use atomic operation for stat
c8f984b zram: remove unnecessary free
95fbfb8 zram: delay pending free request in read path
5343c20 zram: fix race between reset and flushing pending work
7bd9d3e zram: add copyright
47176d5 zram: promote zram from staging
5636a0d zsmalloc: add copyright
286588f zsmalloc: move it under mm
888aed9 Staging: zram: Fix memory leak by refcount mismatch
895ec41 Staging: zram: Fix access of NULL pointer
bae6d9d Staging: zram: Fix variable dereferenced before check
a491dd7 Revert "staging: zram: Add auto loading of module if user opens /dev/zram."
4b85df5 zsmalloc: add more comment
7dd2395 zsmalloc: add Kconfig for enabling page table method
2ee074b staging: zsmalloc: Ensure handle is never 0 on success
195db76 staging: zsmalloc: access page->private by using page_private macro
210b418 staging/zsmalloc: Fixed up incorrect formatted comments
6507ab8 Staging: Fixes string split across lines in zsmalloc zsmalloc-main
b8a2bd1 staging: zram: Rate limit memory allocation errors
c32d11d zram: Change ratio to 90% for bad compress
875fae5 zram: Disable allocation failure logging
84fe4a2 zram: don't grab mutex in zram_slot_free_noity
36ba493 zram: fix invalid memory access
e60cdab Staging: zram: zram_drv.c: Fixed Error of trailing whitespace
a0b95fe zram: prevent data loss in error cases of function zram_bvec_write()
cb42ec8 staging: zram: Add auto loading of module if user opens /dev/zram.
a13825f staging: zram: protect zram_reset_device() call
843651d7 zram: allow request end to coincide with disksize
88b3402 zram: remove zram_sysfs file (v2)
5c55bd1 zram: use atomic64_xxx() to replace zram_stat64_xxx()
f98e3f7 zram: simplify and optimize dev_to_zram()
c067ed4 zram: protect sysfs handler from invalid memory access
9966248 zram: optimize memory operations with clear_page()/copy_page()
f25a7b7 zram: kill unused zram_get_num_devices()
cc346da zram: avoid access beyond the zram device
0a4ee7e zram: avoid double free in function zram_bvec_write()
750c4a7 zram: destroy all devices on error recovery path in zram_init()
fca3f62 zram: use zram->lock to protect zram_free_page() in swap free notify path
6e6f9ee zram: avoid invalid memory access in zram_exit()
a8fd5f3 Staging: Fixes string split across lines in zram
f27ad12 staging: zram: Fix zram_make_request type for 3.0 kernel
67a88ac staging: zsmalloc: Rename page_mapcount_reset
34ea338 zsmalloc: use 3.10 version of zsmalloc
2d2bf2aa zram: use 3.10 version of zram
1257909 CHROMIUM: UPSTREAM: staging: zram/zcache: swtich Kconfig dependency from X86 to ZSMALLOC
d25b478 staging: zcache: fix Kconfig crypto dependency
c145ef3 staging/zmem: Use lockdep_assert_held instead of spin_is_locked
9adc7ea staging: zcache: fix memory corruption bug
454f258 staging: zcache: fix length type mismatch
d65ee03 staging: zcache: replace xvmalloc with zsmalloc
06cdf4f mm: zcache/tmem/cleancache: s/flush/invalidate/
4c7cee5 CHROMIUM: UPSTREAM: staging: zsmalloc: remove x86 dependency
a6376ca staging: zsmalloc: Finish conversion to a separate module
bd731ec staging: zsmalloc: fix memory leak
9347527 staging: zsmalloc: change ZS_MIN_ALLOC_SIZE
821ddf6 staging: zsmalloc: calculate MAX_PHYSMEM_BITS if not defined
da881f2 staging: zsmalloc: add ZS_MAX_PAGES_PER_ZSPAGE
7466add staging: zsmalloc: move object/handle masking defines
cf008df staging: fix powerpc linux-next break on zsmalloc
95dd814 staging: zsmalloc: zsmalloc memory allocation library
da55e1b staging: zcache: support multiple clients, prep for KVM and RAMster
fc7e733 zram: fix merge
b87df97 staging: zram: replace xvmalloc with zsmalloc
6300749 Staging: zram: allow partial page operations
9e0c774 staging: zram: Rename module parameter
3165e8c staging: zram: remove xvmalloc
42d1b3d staging: zram: make global var "num_devices" use unique name
16993cd staging: zram: make global var "devices" use unique name
bbf4585 Staging: zram: Remove useless offset calculation in handle_uncompressed_page()
3735d94 Staging: zram: Add a missing GFP_KERNEL specifier in zram_init_device()
b6eba99 Staging: zram/zram_sysfs.c: Fixed call of obsolete function strict_strtoX
c3fb096 zram: Fix sparse warnings
848d1bb staging: zram: prevent accessing an unallocated table when init fails early
828121d staging: zram: fix zram locking
f526a35 Staging: zram: Replace mutex lock by a R/W semaphore
dc3b0f1 Staging: zram: Refactor zram_read/write() functions
c472828 Revert "Add ZRAM_FOR_ANDROID"

device/samsung/i9300
d04b565 Use 2 zRAM compression streams (now that our driver can)
474b2c1 init: increase read-ahead value to 256 kb