summaryrefslogtreecommitdiff
path: root/Documentation/vm/z3fold.rst
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2018-04-16 14:25:08 -0600
committerJonathan Corbet <corbet@lwn.net>2018-04-16 14:25:08 -0600
commit24844fd33945470942c954324ad2c655929000cc (patch)
tree391b2999f1900e0ca93349000fd8b334a77615c7 /Documentation/vm/z3fold.rst
parent32fb7ef69a9f1e3c8ec18a174fbc474b90ee645e (diff)
parent82381918c4712ba107d3e4ff7117751f396018f7 (diff)
Merge branch 'mm-rst' into docs-next
Mike Rapoport says: These patches convert files in Documentation/vm to ReST format, add an initial index and link it to the top level documentation. There are no contents changes in the documentation, except few spelling fixes. The relatively large diffstat stems from the indentation and paragraph wrapping changes. I've tried to keep the formatting as consistent as possible, but I could miss some places that needed markup and add some markup where it was not necessary. [jc: significant conflicts in vm/hmm.rst]
Diffstat (limited to 'Documentation/vm/z3fold.rst')
-rw-r--r--Documentation/vm/z3fold.rst30
1 files changed, 30 insertions, 0 deletions
diff --git a/Documentation/vm/z3fold.rst b/Documentation/vm/z3fold.rst
new file mode 100644
index 000000000000..224e3c61d686
--- /dev/null
+++ b/Documentation/vm/z3fold.rst
@@ -0,0 +1,30 @@
+.. _z3fold:
+
+======
+z3fold
+======
+
+z3fold is 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.
+
+The main differences between z3fold and zbud are:
+
+* unlike zbud, z3fold allows for up to PAGE_SIZE allocations
+* z3fold can hold up to 3 compressed pages in its page
+* z3fold doesn't export any API itself and is thus intended to be used
+ via the zpool API.
+
+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.7x while zbud's one is around 1.7x.
+
+Unlike zbud (but like zsmalloc for that matter) z3fold_alloc() does not
+return a dereferenceable pointer. Instead, it returns an unsigned long
+handle which encodes actual location of the allocated object.
+
+Keeping effective compression ratio close to zsmalloc's, z3fold doesn't
+depend on MMU enabled and provides more predictable reclaim behavior
+which makes it a better fit for small and response-critical systems.