Compcache

Compressed in-memory swap device for Linux
Download

Compcache Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Nitin Gupta
  • Publisher web site:
  • http://code.google.com/u/nitingupta910/

Compcache Tags


Compcache Description

Compressed in-memory swap device for Linux Compcache is a tool that creates RAM based block device (named ramzswap) which acts as swap disk. Pages swapped to this disk are compressed and stored in memory itself.Compressing pages and keeping them in RAM virtually increases its capacity. This allows more applications to fit in given amount of memory.The usual argument I get is - memory is so cheap so why bother with compression? So I list here some of the use cases. Rest depends on your imagination. * Netbooks: Market is now getting flooded with these "lighweight laptops". These are memory constrained but have CPU enough to drive on compressed memory (e.g. Cloudbook features 1.2 GHz processor!). * Virtualization: With compcache at hypervisor level, we can compress any part of guest memory transparently - this is true for any type of Guest OS (Linux, Windows etc.). This should allow running more number of VMs for given amount of total host memory. * Embedded Devices: Memory is scarce and adding more memory increases device cost. Also, flash storage suffers from wear-leveling issues, so its useful if we can avoid using them as swap device.Compiling:make' - This will compile all modules against your kernelmake doc - This will compile rzscontrol manual page: sub-projects/rzscontrol/man/rzscontrol.1 - Optional (HIGHLY RECOMMENDED):- Apply the patch found in compcache/patches/ directory and just compile the kernel as usual. Currently, the patch is against 2.6.33 but it should apply to slightly older kernels too. This will enable 'swap free notify' feature which allows kernel to send callback to ramzswap as soon as a swap slot becomes free. So, we can immediately free memory allocated for this page, eliminating any stale data in (compressed) memory. - Uncomment '#define CONFIG_SWAP_FREE_NOTIFY' in compcache/compat.h before compiling compcache against this patched kernel. Otherwise, this swap notify callback will not be used.Following binaries are created:- ramzswap.ko (kernel driver)- sub-projects/rzscontrol/rzscontrol (userspace tool)Using:Following shows a typical sequence of steps for using ramzswap.1) Load Modules: # load dependency modules modprobe lzo_compress modprobe lzo_decompress # example1: load ramzswap module insmod ramzswap.ko num_devices=4This creates 4 devices (/dev/ramzswap{0,1,2,3}) which are left uninitialized. # example2: load ramzswap module and initialize the first device insmod ramzswap.ko num_devices=4 disksize_kb=20480This initializes first device (/dev/ramzswap0) with disksize of 20MB. Other 3 devices (/dev/ramzswap{1,2,3}) are left uninitialized.2) Initialize:Use rzscontrol utility to configure and initialize individual ramzswap devices. Example: rzscontrol /dev/ramzswap0 --init # uses default value of disksize_kb*See rzscontrol manpage for more details and examples*3) Activate:swapon /dev/ramzswap2 # or any other initialized ramzswap device4) Stats:rzscontrol /dev/ramzswap2 --stats5) Deactivate:swapoff /dev/ramzswap26) Reset: rzscontrol /dev/ramzswap2 --reset7) Unload Modules: rmmod ramzswap rmmod lzo_compress rmmod lzo_decompressCommon Problems:- If you get lots of compiler errors, make sure you have the package for kernel source installed. For e.g., on Fedora its 'kernel-devel' package. What's New in This Release: · Sync-up with mainline version which includes changes below. · Lots and lots of cleanups. · Use small case for ramzswap module parameter: NUM_DEVICES -> num_devices. · Add three module parameters: backing_swap, memlimit_kb and disksize_kb to allow initializing the first device (/dev/ramzswap0) without using rzscontrol utility (see Issue #50). · Use 'struct page' instead of 32-bit PFNs in ramzswap driver and xvmalloc. This is to make these 64-bit safe. · xvmalloc is no longer a separate module and does not export any symbols. Its compiled directly with ramzswap block driver. · Removed useless {load,unload}_modules.sh scripts. · Fix to make sure disksize matches usable pages in backing swap file. · Fix memory leak in (rare) error condition in init_device(). · Fix memory leak in (rare) failure in create_device(). · Remove swap discard hooks. Swap notifiers makes these redundant. · Unify init_device() fail path and reset_device(). · Do not accept backing swap with bad pages. · Fix zero-page accounting. · Use lock for 64-bit stats to prevent value corruption. · Rewrite swap notify patch. · Fix crash when reset is called when there are pending I/Os.


Compcache Related Software