zram
-
Status: Available in mainline kernel as of version 3.14 (March 2014)
-
Implementation: compressed block device, memory is dynamically
allocated as data is stored -
Usage: Configure zram block device as a swap device to eliminate need
for physical swap defice or swap file -
Benefits:
-
Eliminates need for physical swap device. This beame popular when
netbooks first showed up. Zram (then compcache) allowed users to
avoid swap shortening the lifespan of SSDs in these memory
constrained systems. -
A zram block device can be used for other applications other than
swap, anything you might use a block device for conceivably.
-
-
Drawbacks:
- Once a page is stored in zram it will remain there until paged in or
invalidated. The first pages to be paged out will be the oldest
pages (LRU list), these are ‘cold’ pages that are infrequently
access. As the system continues to swap it will move on to pages
that are warmer (more frequently accessed), these may not be able to
be stored because of the swap slots consumed by the cold pages. What
zram can not do (compcache had the option to configure a block
backing device) is to evict pages out to physical disk. Ideally you
want to age data out of the in-kernel compressed swap space out to
disk so that you can use kernel memory for caching warm swap pages
or free it for more productive use.
- Once a page is stored in zram it will remain there until paged in or
zswap
-
Status: Available in mainline kernel as of version 3.11 (September 2013)
-
Implementation: compressed in-kernel cache for swap pages. In-kernel
cache is compressed, the compression algorithm is pluggable using the
CryptoAPI and the storage for pages is dynamically allocated. Older
pages can be evicted to disk making this a sort of write-behind
cache. -
Usage: Cache swap pages destined for regular swap devices (or swap
files). -
Benefits:
-
Integration with swap code (using Frontswap API) allows zswap to
choose to store only pages that compress well and handle memory
allocation failures, in those cases pages are sent to the backing
swap device. -
Oldest pages in the cache are pushed out to backing swap device to
make room for newer pages, this solves the LRU inversion problem
that a lack of page eviction would present.
-
-
Drawbacks:
- Needs a physical swap device (or swapfile).