Compressed in-memory swap device for Linux. #In-memory swap #Swap disk #Compressed swapped pages #Compressed #In-memory #Swap
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.
make' - This will compile all modules against your kernel make 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. 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)
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=4
This 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=20480
This 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 device
4) Stats: rzscontrol /dev/ramzswap2 --stats
5) Deactivate: swapoff /dev/ramzswap2
6) Reset: rzscontrol /dev/ramzswap2 --reset
7) Unload Modules: rmmod ramzswap rmmod lzo_compress rmmod lzo_decompress
- 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 Compcache 0.6.2:
- 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).
Compcache 0.6.2
Softpedia Editor's Pick add to watchlist add to download basket send us an update REPORT- runs on:
- Linux
- filename:
- compcache-0.6.2.tar.gz
- main category:
- System
- developer:
- visit homepage
IrfanView 4.67
7-Zip 23.01 / 24.04 Beta
Windows Sandbox Launcher 1.0.0
4k Video Downloader 1.5.3.0080 Plus / 4.30.0.5655
Microsoft Teams 24060.3102.2733.5911 Home / 1.7.00.7956 Work
ShareX 16.0.1
Zoom Client 6.0.3.37634
calibre 7.9.0
Bitdefender Antivirus Free 27.0.35.146
Context Menu Manager 3.3.3.1
- calibre
- Bitdefender Antivirus Free
- Context Menu Manager
- IrfanView
- 7-Zip
- Windows Sandbox Launcher
- 4k Video Downloader
- Microsoft Teams
- ShareX
- Zoom Client