One of the changes I did for Fedora 29 adding using ZRAM as swap on ARM. The use of compressed RAM for swap on constrained single board computer devices has performance advantages because the RAM is an order of faster than most of the attached storage and in the case of SD/emmc and related flash storage it also saves on the wear and tear of the flash there extending the life of the storage device.
The use of ZRAM as swap isn’t limited to constrained SBCs though, I also use it on my x86 laptop to great effect. It’s also very simple to setup.
# dnf install zram # systemctl enable zram-swap.service # reboot
And that’s it! Simple right? To see how it’s being used there are three commands that are useful:
# systemctl status zram-swap.service ● zram-swap.service - Enable compressed swap in memory using zram Loaded: loaded (/usr/lib/systemd/system/zram-swap.service; enabled; vendor preset: disabled) Active: active (exited) since Tue 2018-10-09 22:13:24 BST; 3 days ago Main PID: 1177 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 4915) Memory: 0B CGroup: /system.slice/zram-swap.service Oct 09 22:13:24 localhost zramstart: Setting up swapspace version 1, size = 7.4 GiB (7960997888 bytes) Oct 09 22:13:24 localhost zramstart: no label, UUID=d79b7cf6-41e7-4065-90a9-000811c654b4 Oct 09 22:13:24 localhost zramstart: Activated ZRAM swap device of 7961 MB Oct 09 22:13:24 localhost systemd: Started Enable compressed swap in memory using zram. # swapon NAME TYPE SIZE USED PRIO /dev/zram0 partition 7.4G 851.8M -2 # zramctl NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT /dev/zram0 lz4 7.4G 848.3M 378.4M 389.9M 8 [SWAP] #
When I was researching the use of ZRAM there was a lot of information online. A lot of implementations sliced up the zram into multiple slices to enable the balancing of the slices across CPUs, but this is outdated information as the zram support in recent kernels is now multi threaded so there’s no performance advantage to having multiple smaller swap devices any longer, and having a single larger swap space allows the kernel to be more effective in using it.
In Fedora all the pieces of the Fedora implementation are stored in the package source repo. So those that are interested in using zram for other use cases are free to test it. Bugs and RFEs can be reported as issues in pagure or in RHBZ like any other package.