Zram

From Segfault
Jump to navigation Jump to search

zram is included since Linux 3.14[1] and can be described as follows: [2]

> The zram module creates RAM based block devices [...]
> 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 :)

Usage

$ sudo modprobe zram
$ cat /sys/block/zram0/comp_algorithm
[lzo] lzo-rle lz4 lz4hc 842 zstd

$ echo 800M > /sys/block/zram0/disksize
$ sudo mkswap -L zram0 /dev/zram0 && sudo swapon -p2 /dev/zram0                 # prioritize over swap0 and swap1

Or, with zramctl[3] (from util-linux):

$ sudo zramctl -f -s 512M -t 2 -a zstd                                          # Use 50%..75% of RAM
$ sudo mkswap /dev/zram0 && swapon -p2 /dev/zram0

$ zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd           512M 25.1M   12M   14M       2 [SWAP]

Statistics

$ cat /proc/swaps 
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition 	524284	0	0
/dev/dm-0                               partition	976556	157660	1
/dev/zram0                              partition 	819196	80148	2

Many of these objects in /sys/block/zramX/ are already obsolete[4], so it's best to use the following files to get zram metrics:

$ awk '{print "failed_reads:", $1, "failed_writes:", $2, "invalid_io:", $3, "notify_free:", $4}'  /sys/block/zram0/io_stat 
failed_reads: 0 failed_writes: 0 invalid_io: 0 notify_free: 5565
$ awk '{print "orig_data_size", $1/1024/1024"M", "\ncompr_data_size", \
             $2/1024/1024"M", "\nmem_used_total", $3/1024/1024"M", "\nmem_limit", \
             $4, "\nmem_used_max", $5/1024/1024"M", "\nzero_pages", $6, "\nnum_migrated", \
             $7}' /sys/block/zram0/mm_stat column -t
orig_data_size   281.211M
compr_data_size  15.0802M
mem_used_total   16.2773M
mem_limit        0
mem_used_max     16.5117M
zero_pages       61244
num_migrated     0

Links

References