summaryrefslogtreecommitdiffstats
path: root/mm/Kconfig
diff options
context:
space:
mode:
authorVitaly Wool <vitalywool@gmail.com>2016-05-20 19:58:30 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-20 20:58:30 -0400
commit9a001fc19cccdeb9be4c3b89ad089d92df303c44 (patch)
tree7b524d63f6706d29b95a3c4b1cf2d273d1b9a94c /mm/Kconfig
parentd5ee7c3bcca6fe2b4f7a1fdee253250059c110d2 (diff)
z3fold: the 3-fold allocator for compressed pages
This patch introduces z3fold, a special purpose allocator for storing compressed pages. It is designed to store up to three compressed pages per physical page. It is a ZBUD derivative which allows for higher compression ratio keeping the simplicity and determinism of its predecessor. This patch comes as a follow-up to the discussions at the Embedded Linux Conference in San-Diego related to the talk [1]. The outcome of these discussions was that it would be good to have a compressed page allocator as stable and deterministic as zbud with with higher compression ratio. To keep the determinism and simplicity, z3fold, just like zbud, always stores an integral number of compressed pages per page, but it can store up to 3 pages unlike zbud which can store at most 2. Therefore the compression ratio goes to around 2.6x while zbud's one is around 1.7x. The patch is based on the latest linux.git tree. This version has been updated after testing on various simulators (e.g. ARM Versatile Express, MIPS Malta, x86_64/Haswell) and basing on comments from Dan Streetman [3]. [1] https://openiotelc2016.sched.org/event/6DAC/swapping-and-embedded-compression-relieves-the-pressure-vitaly-wool-softprise-consulting-ou [2] https://lkml.org/lkml/2016/4/21/799 [3] https://lkml.org/lkml/2016/5/4/852 Link: http://lkml.kernel.org/r/20160509151753.ec3f9fda3c9898d31ff52a32@gmail.com Signed-off-by: Vitaly Wool <vitalywool@gmail.com> Cc: Seth Jennings <sjenning@redhat.com> Cc: Dan Streetman <ddstreet@ieee.org> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/Kconfig')
-rw-r--r--mm/Kconfig12
1 files changed, 11 insertions, 1 deletions
diff --git a/mm/Kconfig b/mm/Kconfig
index b0432b71137d..1a6a28ebcb8b 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -567,7 +567,7 @@ config ZPOOL
567 zsmalloc. 567 zsmalloc.
568 568
569config ZBUD 569config ZBUD
570 tristate "Low density storage for compressed pages" 570 tristate "Low (Up to 2x) density storage for compressed pages"
571 default n 571 default n
572 help 572 help
573 A special purpose allocator for storing compressed pages. 573 A special purpose allocator for storing compressed pages.
@@ -576,6 +576,16 @@ config ZBUD
576 deterministic reclaim properties that make it preferable to a higher 576 deterministic reclaim properties that make it preferable to a higher
577 density approach when reclaim will be used. 577 density approach when reclaim will be used.
578 578
579config Z3FOLD
580 tristate "Up to 3x density storage for compressed pages"
581 depends on ZPOOL
582 default n
583 help
584 A special purpose allocator for storing compressed pages.
585 It is designed to store up to three compressed pages per physical
586 page. It is a ZBUD derivative so the simplicity and determinism are
587 still there.
588
579config ZSMALLOC 589config ZSMALLOC
580 tristate "Memory allocator for compressed pages" 590 tristate "Memory allocator for compressed pages"
581 depends on MMU 591 depends on MMU