zram: Compressed RAM based block devices
----------------------------------------

* Introduction

The zram module creates RAM based block devices named /dev/zram<id>
(<id> = 0, 1, ...). Pages written to these disks are compressed and stored
in memory itself. These disks allow very fast I/O and compression provides
good amounts of memory savings. Some of the usecases include /tmp storage,
use as swap disks, various caches under /var and maybe many more :)

Statistics for individual zram devices are exported through sysfs nodes at
/sys/block/zram<id>/

* Usage

There are several ways to configure and manage zram device(-s):
a) using zram and zram_control sysfs attributes
b) using zramctl utility, provided by util-linux (util-linux@vger.kernel.org).

In this document we will describe only 'manual' zram configuration steps,
IOW, zram and zram_control sysfs attributes.

In order to get a better idea about zramctl please consult util-linux
documentation, zramctl man-page or `zramctl --help'. Please be informed
that zram maintainers do not develop/maintain util-linux or zramctl, should
you have any questions please contact util-linux@vger.kernel.org

Following shows a typical sequence of steps for using zram.

WARNING
=======
For the sake of simplicity we skip error checking parts in most of the
examples below. However, it is your sole responsibility to handle errors.

zram sysfs attributes always return negative values in case of errors.
The list of possible return codes:
-EBUSY	-- an attempt to modify an attribute that cannot be changed once
the device has been initialised. Please reset device first;
-ENOMEM	-- zram was not able to allocate enough memory to fulfil your
needs;
-EINVAL	-- invalid input has been provided.

If you use 'echo', the returned value that is changed by 'echo' utility,
and, in general case, something like:

	echo 3 > /sys/block/zram0/max_comp_streams
	if [ $? -ne 0 ];
		handle_error
	fi

should suffice.

1) Load Module:
	modprobe zram num_devices=4
	This creates 4 devices: /dev/zram{0,1,2,3}

num_devices parameter is optional and tells zram how many devices should be
pre-created. Default: 1.

2) Set max number of compression streams
	Compression backend may use up to max_comp_streams compression streams,
	thus allowing up to max_comp_streams concurrent compression operations.
	By default, compression backend uses single compression stream.

	Examples:
	#show max compression streams number
	cat /sys/block/zram0/max_comp_streams

	#set max compression streams number to 3
	echo 3 > /sys/block/zram0/max_comp_streams

Note:
In order to enable compression backend's multi stream support max_comp_streams
must be initially set to desired concurrency level before ZRAM device
initialisation. Once the device initialised as a single stream compression
backend (max_comp_streams equals to 1), you will see error if you try to change
the value of max_comp_streams because single stream compression backend
implemented as a special case by lock overhead issue and does not support
dynamic max_comp_streams. Only multi stream backend supports dynamic
max_comp_streams adjustment.

3) Select compression algorithm
	Using comp_algorithm device attribute one can see available and
	currently selected (shown in square brackets) compression algorithms,
	change selected compression algorithm (once the device is initialised
	there is no way to change compression algorithm).

	Examples:
	#show supported compression algorithms
	cat /sys/block/zram0/comp_algorithm
	lzo [lz4]

	#select lzo compression algorithm
	echo lzo > /sys/block/zram0/comp_algorithm

4) Set Disksize
        Set disk size by writing the value to sysfs node 'disksize'.
        The value can be either in bytes or you can use mem suffixes.
        Examples:
            # Initialize /dev/zram0 with 50MB disksize
            echo $((50*1024*1024)) > /sys/block/zram0/disksize

            # Using mem suffixes
            echo 256K > /sys/block/zram0/disksize
            echo 512M > /sys/block/zram0/disksize
            echo 1G > /sys/block/zram0/disksize

Note:
There is little point creating a zram of greater than twice the size of memory
since we expect a 2:1 compression ratio. Note that zram uses about 0.1% of the
size of the disk when not in use so a huge zram is wasteful.

5) Set memory limit: Optional
	Set memory limit by writing the value to sysfs node 'mem_limit'.
	The value can be either in bytes or you can use mem suffixes.
	In addition, you could change the value in runtime.
	Examples:
	    # limit /dev/zram0 with 50MB memory
	    echo $((50*1024*1024)) > /sys/block/zram0/mem_limit

	    # Using mem suffixes
	    echo 256K > /sys/block/zram0/mem_limit
	    echo 512M > /sys/block/zram0/mem_limit
	    echo 1G > /sys/block/zram0/mem_limit

	    # To disable memory limit
	    echo 0 > /sys/block/zram0/mem_limit

6) Activate:
	mkswap /dev/zram0
	swapon /dev/zram0

	mkfs.ext4 /dev/zram1
	mount /dev/zram1 /tmp

7) Add/remove zram devices

zram provides a control interface, which enables dynamic (on-demand) device
addition and removal.

In order to add a new /dev/zramX device, perform read operation on hot_add
attribute. This will return either new device's device id (meaning that you
can use /dev/zram<id>) or error code.

Example:
	cat /sys/class/zram-control/hot_add
	1

To remove the existing /dev/zramX device (where X is a device id)
execute
	echo X > /sys/class/zram-control/hot_remove

8) Stats:
Per-device statistics are exported as various nodes under /sys/block/zram<id>/

A brief description of exported device attributes. For more details please
read Documentation/ABI/testing/sysfs-block-zram.

Name            access            description
----            ------            -----------
disksize          RW    show and set the device's disk size
initstate         RO    shows the initialization state of the device
reset             WO    trigger device reset
num_reads         RO    the number of reads
failed_reads      RO    the number of failed reads
num_write         RO    the number of writes
failed_writes     RO    the number of failed writes
invalid_io        RO    the number of non-page-size-aligned I/O requests
max_comp_streams  RW    the number of possible concurrent compress operations
comp_algorithm    RW    show and change the compression algorithm
notify_free       RO    the number of notifications to free pages (either
                        slot free notifications or REQ_DISCARD requests)
zero_pages        RO    the number of zero filled pages written to this disk
orig_data_size    RO    uncompressed size of data stored in this disk
compr_data_size   RO    compressed size of data stored in this disk
mem_used_total    RO    the amount of memory allocated for this disk
mem_used_max      RW    the maximum amount of memory zram have consumed to
                        store the data (to reset this counter to the actual
                        current value, write 1 to this attribute)
mem_limit         RW    the maximum amount of memory ZRAM can use to store
                        the compressed data
pages_compacted   RO    the number of pages freed during compaction
                        (available only via zram<id>/mm_stat node)
compact           WO    trigger memory compaction

WARNING
=======
per-stat sysfs attributes are considered to be deprecated.
The basic strategy is:
-- the existing RW nodes will be downgraded to WO nodes (in linux 4.11)
-- deprecated RO sysfs nodes will eventually be removed (in linux 4.11)

The list of deprecated attributes can be found here:
Documentation/ABI/obsolete/sysfs-block-zram

Basically, every attribute that has its own read accessible sysfs node
(e.g. num_reads) *AND* is accessible via one of the stat files (zram<id>/stat
or zram<id>/io_stat or zram<id>/mm_stat) is considered to be deprecated.

User space is advised to use the following files to read the device statistics.

File /sys/block/zram<id>/stat

Represents block layer statistics. Read Documentation/block/stat.txt for
details.

File /sys/block/zram<id>/io_stat

The stat file represents device's I/O statistics not accounted by block
layer and, thus, not available in zram<id>/stat file. It consists of a
single line of text and contains the following stats separated by
whitespace:
	failed_reads
	failed_writes
	invalid_io
	notify_free

File /sys/block/zram<id>/mm_stat

The stat file represents device's mm statistics. It consists of a single
line of text and contains the following stats separated by whitespace:
	orig_data_size
	compr_data_size
	mem_used_total
	mem_limit
	mem_used_max
	zero_pages
	num_migrated

9) Deactivate:
	swapoff /dev/zram0
	umount /dev/zram1

10) Reset:
	Write any positive value to 'reset' sysfs node
	echo 1 > /sys/block/zram0/reset
	echo 1 > /sys/block/zram1/reset

	This frees all the memory allocated for the given device and
	resets the disksize to zero. You must set the disksize again
	before reusing the device.

Nitin Gupta
ngupta@vflare.org
