[RFC][PATCH 00/10] zsmalloc auto-compaction

Sergey Senozhatsky
2015-05-29T15:06:11Z

Hello,

RFC

this is 4.3 material, but I wanted to publish it sooner to gain
responses and to settle it down before 4.3 merge window opens.

in short, this series tweaks zsmalloc's compaction and adds
auto-compaction support. auto-compaction is not aimed to replace
manual compaction, intead it's supposed to be good enough. yet
it surely slows down zsmalloc in some scenarious. whilst simple
un-tar test didn't show any significant performance difference

quote from commit 0007:

this test copies a 1.3G linux kernel tar to mounted zram disk,
and extracts it.

w/auto-compaction:

cat /sys/block/zram0/mm_stat
1171456 26006 86016 0 86016 32781 0

time tar xf linux-3.10.tar.gz -C linux

real 0m16.970s
user 0m15.247s
sys 0m8.477s

du -sh linux
2.0G linux

cat /sys/block/zram0/mm_stat
3547353088 2993384270 3011088384 0 3011088384 24310 108

=====================================================================

w/o auto compaction:

cat /sys/block/zram0/mm_stat
1171456 26000 81920 0 81920 32781 0

time tar xf linux-3.10.tar.gz -C linux

real 0m16.983s
user 0m15.267s
sys 0m8.417s

du -sh linux
2.0G linux

cat /sys/block/zram0/mm_stat
3548917760 2993566924 3011317760 0 3011317760 23928 0

Sergey Senozhatsky (10):
zsmalloc: drop unused variable `nr_to_migrate'
zsmalloc: always keep per-class stats
zsmalloc: introduce zs_can_compact() function
zsmalloc: cosmetic compaction code adjustments
zsmalloc: add `num_migrated' to zs_pool
zsmalloc: move compaction functions
zsmalloc: introduce auto-compact support
zsmalloc: export zs_pool `num_migrated'
zram: remove `num_migrated' from zram_stats
zsmalloc: lower ZS_ALMOST_FULL waterline

drivers/block/zram/zram_drv.c | 12 +-
drivers/block/zram/zram_drv.h | 1 -
include/linux/zsmalloc.h | 1 +
mm/zsmalloc.c | 578 +++++++++++++++++++++---------------------
4 files changed, 296 insertions(+), 296 deletions(-)

--
2.4.2.337.gfae46aa