Zram
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