lkml.org 
[lkml]   [2011]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/3] staging: zcache: xcfmalloc support
    Date
    This patchset introduces a new memory allocator for persistent
    pages for zcache. The current allocator is xvmalloc. xvmalloc
    has two notable limitations:
    * High (up to 50%) external fragmentation on allocation sets > PAGE_SIZE/2
    * No compaction support which reduces page reclaimation

    xcfmalloc seeks to fix these issues by using scatter-gather model that
    allows for cross-page allocations and relocatable data blocks.

    In tests, with pages that only compress to 75% of their original
    size, xvmalloc had an effective compression (pages stored / pages used by the
    compressed memory pool) of ~95% (~20% lost to fragmentation). Almost nothing
    was gained by the compression in this case. xcfmalloc had an effective
    compression of ~77% (about ~2% lost to fragmentation and metadata overhead).

    xcfmalloc uses the same locking scheme as xvmalloc; a single pool-level
    spinlock. This can lead to some contention. However, in my tests on a 4
    way SMP system, the contention was minimal (200 contentions out of 600k
    aquisitions). The locking scheme may be able to be improved in the future.
    In tests, xcfmalloc and xvmalloc had identical throughputs.

    While the xcfmalloc design lends itself to compaction, this is not yet
    implemented. Support will be added in a follow-on patch.

    Based on 3.1-rc4.

    Seth Jennings (3):
    staging: zcache: xcfmalloc memory allocator for zcache
    staging: zcache: replace xvmalloc with xcfmalloc
    staging: zcache: add zv_page_count and zv_desc_count

    drivers/staging/zcache/Makefile | 2 +-
    drivers/staging/zcache/xcfmalloc.c | 653 ++++++++++++++++++++++++++++++++++
    drivers/staging/zcache/xcfmalloc.h | 29 ++
    drivers/staging/zcache/zcache-main.c | 154 ++++++---
    4 files changed, 791 insertions(+), 47 deletions(-)
    create mode 100644 drivers/staging/zcache/xcfmalloc.c
    create mode 100644 drivers/staging/zcache/xcfmalloc.h

    --
    1.7.4.1



    \
     
     \ /
      Last update: 2011-08-31 16:45    [W:4.352 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site