cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

z3fold.rst (1260B)


      1.. _z3fold:
      2
      3======
      4z3fold
      5======
      6
      7z3fold is a special purpose allocator for storing compressed pages.
      8It is designed to store up to three compressed pages per physical page.
      9It is a zbud derivative which allows for higher compression
     10ratio keeping the simplicity and determinism of its predecessor.
     11
     12The main differences between z3fold and zbud are:
     13
     14* unlike zbud, z3fold allows for up to PAGE_SIZE allocations
     15* z3fold can hold up to 3 compressed pages in its page
     16* z3fold doesn't export any API itself and is thus intended to be used
     17  via the zpool API.
     18
     19To keep the determinism and simplicity, z3fold, just like zbud, always
     20stores an integral number of compressed pages per page, but it can store
     21up to 3 pages unlike zbud which can store at most 2. Therefore the
     22compression ratio goes to around 2.7x while zbud's one is around 1.7x.
     23
     24Unlike zbud (but like zsmalloc for that matter) z3fold_alloc() does not
     25return a dereferenceable pointer. Instead, it returns an unsigned long
     26handle which encodes actual location of the allocated object.
     27
     28Keeping effective compression ratio close to zsmalloc's, z3fold doesn't
     29depend on MMU enabled and provides more predictable reclaim behavior
     30which makes it a better fit for small and response-critical systems.