zram, formerly called compcache, is a
Linux kernel module for creating a compressed
block device in RAM, i.e. a
RAM disk
Ram, ram, or RAM may refer to:
Animals
* A male sheep
* Ram cichlid, a freshwater tropical fish
People
* Ram (given name)
* Ram (surname)
* Ram (director) (Ramsubramaniam), an Indian Tamil film director
* RAM (musician) (born 1974), Dutch
* ...
with on-the-fly disk compression. The block device created with zram can then be used for
swap or as general-purpose RAM disk. The two most common uses for zram are for the storage of temporary files () and as a swap device. Initially, zram had only the latter function, hence the original name "compcache" ("compressed cache").
After four years in the Linux kernel's driver staging area, zram was introduced into the mainline Linux kernel in version 3.14, released on March 30, 2014. From Linux kernel version 3.15 onwards (released on June 8, 2014), zram supports multiple compression streams and multiple
compression algorithms. Compression algorithms include
DEFLATE (
DEFLATE
),
LZ4 (
LZ4
, and
LZ4HC
"high compression"),
LZO (
LZO-RLE
"run-length encoding"),
Zstandard (
ZSTD
),
842 (
842
). From kernel 5.1, the default is
LZO-RLE
,
which has a balance of speed and ratio. Like most other system parameters, the compression algorithm can be selected via
sysfs
sysfs is a pseudo file system provided by the Linux kernel that exports information about various kernel subsystems, hardware devices, and associated device drivers from the kernel's device model to user space through virtual files. In addit ...
.
When used as a compressed swap space, zram is similar to
zswap, which is not a general-purpose RAM disk, but rather an in-kernel compressed cache for swap pages. Until the introduction of
CONFIG_ZRAM_WRITEBACK
in kernel version 4.14, unlike zswap, zram was unable to use a storage device as a backing store, so it was unable to move less-frequently used pages to disk. However, zswap always requires a backing store, which is not the case for zram.
When used for swap, zram (like zswap) allows Linux to make more efficient use of RAM, since the operating system can then hold more pages of memory in the compressed swap than if the same amount of RAM had been used as application memory or disk cache. This is particularly effective on machines that do not have much memory.
In 2012,
Ubuntu
Ubuntu ( ) is a Linux distribution based on Debian and composed mostly of free and open-source software. Ubuntu is officially released in three editions: '' Desktop'', '' Server'', and ''Core'' for Internet of things devices and robots. All th ...
briefly considered enabling zram by default on computers with small amounts of installed RAM.
For this same reason,
Fedora
A fedora () is a hat with a soft brim and indented crown.Kilgour, Ruth Edwards (1958). ''A Pageant of Hats Ancient and Modern''. R. M. McBride Company. It is typically creased lengthwise down the crown and "pinched" near the front on both sides ...
enabled zram by default starting with release 33.
Using compressed swap space with zram or zswap also offers advantages for low-end hardware devices such as
embedded device
An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is ''embedded'' a ...
s and
netbook
Netbook was a commonly used term that identified a product class of small and inexpensive laptops which were sold from 2007 to around 2013. These machines were designed primarily as cost-effective tools for consumers to access the Inte ...
s. Such devices usually use
flash-based storage, which has limited lifespan due to
write amplification, and may also use it to provide
swap space. Using zram or zswap reduces the swap usage, which effectively reduces the amount of wear placed on flash-based storage and makes it last longer. Using zram also results in significantly reduced
I/O for Linux systems that require swapping.
See also
*
Swap partitions on SSDs
References
120
External links
zramLinux kernel documentation an
manual page
Compcache, Compressed Caching for LinuxCompcache: in-memory compressed swapping May 26, 2009, LWN.net, by Nitin Gupta
In-kernel memory compression April 3, 2013, LWN.net, by Dan Magenheimer
The Compression Cache: Virtual Memory Compression for Handheld Computers March 16, 2000, by
Michael J. Freedman
{{Operating system
Memory management
Linux kernel features
Virtual memory