[PATCH 0/4] compcache: compressed in-memory swapping



Hi,

Project home: http://compcache.googlecode.com/

It creates RAM based block devices which can be used (only) as swap disks.
Pages swapped to this device are compressed and stored in memory itself. This
is a big win over swapping to slow hard-disk which are typically used as swap
disk. For flash, these suffer from wear-leveling issues when used as swap disk
- so again its helpful. For swapless systems, it allows more apps to run for a
given amount of memory.

It can create multiple ramzswap devices (/dev/ramzswapX, X = 0, 1, 2, ...).
Each of these devices can have separate backing swap (file or disk partition)
which is used when incompressible page is found or memory limit for device is
reached.

A separate userspace utility called rzscontrol is used to manage individual
ramzswap devices.

* Testing notes

Tested on x86, x64, ARM
ARM:
- Cortex-A8 (Beagleboard)
- ARM11 (Android G1)
- OMAP2420 (Nokia N810)

* Performance

All performance numbers/plots can be found at:
http://code.google.com/p/compcache/wiki/Performance

Below is a summary of this data:

General:
- Swap R/W times are reduced from milliseconds (in case of hard disks)
down to microseconds.

Positive cases:
- Shows 33% improvement in 'scan' benchmark which allocates given amount
of memory and linearly reads/writes to this region. This benchmark also
exposes *bottlenecks* in ramzswap code (global mutex) due to which this gain
is so small.
- On Linux thin clients, it gives the effect of nearly doubling the amount of
memory.

Negative cases:
Any workload that has active working set w.r.t. filesystem cache that is
nearly equal to amount of RAM while has minimal anonymous memory requirement,
is expected to suffer maximum loss in performance with ramzswap enabled.

Iozone filesystem benchmark can simulate exactly this kind of workload.
As expected, this test shows performance loss of ~25% with ramzswap.


(Sorry for long patch[2/4] but its now very hard to split it up).

Documentation/blockdev/00-INDEX | 2 +
Documentation/blockdev/ramzswap.txt | 52 ++
drivers/block/Kconfig | 22 +
drivers/block/Makefile | 1 +
drivers/block/ramzswap/Makefile | 2 +
drivers/block/ramzswap/ramzswap.c | 1511 +++++++++++++++++++++++++++++++++
drivers/block/ramzswap/ramzswap.h | 182 ++++
drivers/block/ramzswap/xvmalloc.c | 556 ++++++++++++
drivers/block/ramzswap/xvmalloc.h | 30 +
drivers/block/ramzswap/xvmalloc_int.h | 86 ++
include/linux/ramzswap_ioctl.h | 51 ++
include/linux/swap.h | 5 +
mm/swapfile.c | 33 +
13 files changed, 2533 insertions(+), 0 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: mdconfig unable to allocate memory
    ... > one ensure that all the memory is being used for suitable file caching ... > disk, really; I assumed that it would immediately start dumping ... > anything I put in it, into swap, causing disk access. ... file system with 4GB of RAM without a problem, ...
    (freebsd-current)
  • Re: Cannot print any Word docs after upgrading to OS X 10.4.9
    ... It does not hurt, but, on a machine with plenty of memory, it would not ... the system creates swap files to deal with those awkward moments ... will page out a few megabytes of Word's working memory to disk and let ... Each one after the first 64MB swapfile0 doubles the total swapfile ...
    (microsoft.public.mac.office.word)
  • Re: Q: How much Swap space?
    ... > plenty of unused physical memory. ... > discarding more frequently used disk cache. ... The only "bad" thing about not having used any swap, IMHO, is that I have ...
    (alt.os.linux.suse)
  • Re: swap_pager complaints but not using swap
    ... using a whole 96K of swap. ... I don't see any disk related ... Traditionally swap used the b partition. ... virtual memory support. ...
    (freebsd-questions)
  • [PATCH 0/3] compcache: in-memory compressed swapping v4
    ... Changelog: v4 vs v3 ... Remove swap notify callback and related bits. ... Above changes can cause ramzswap to work poorly since it cannot ... Pages swapped to these disks are compressed and stored in memory itself. ...
    (Linux-Kernel)