how to enable zswap disk cache in ubuntu

A lightweight compressed cache is a type of data storage solution that is designed to be fast, efficient, and easy to use. It typically uses a combination of compression algorithms and caching techniques to reduce the amount of storage space required and speed up access to data. This type of cache is often used in applications that require low latency and high throughputs, such as web applications, databases, and streaming media services.

Configure a lightweight compressed cache for swap pages to mitigate the performance impact of swapping on your desktop.

This solution requires a configured swap partition as it is not intended to replace it.

$ swapon
NAME      TYPE      SIZE USED PRIO
/dev/dm-2 partition  16G 4.8G   -2

Enable zswap on a running system

Enable zswap module.

$ echo Y | sudo tee /sys/module/zswap/parameters/enabled
Y

Use z3fold  allocator as it is designed to store up to three compressed pages per physical page (default zbud). 

$ echo z3fold | sudo tee /sys/module/zswap/parameters/zpool
z3fold

Use fast zstd compression algorithm (default lzo).

$ echo zstd | sudo tee /sys/module/zswap/parameters/compressor
zstd

Define maximum memory pool in percent (default 20%)

$ echo 20 | sudo tee /sys/module/zswap/parameters/max_pool_percent

Ensure that checking for the same-value filled pages during store operation is enabled (default Y)

$ echo Y | sudo tee /sys/module/zswap/parameters/same_filled_pages_enabled
Y

Inspect zswap internals

Use debugfs to inspect zswap internals and determine that it is working as ex[ected.

$ sudo find /sys/kernel/debug/zswap/ -type f -exec grep -H . {} \;
/sys/kernel/debug/zswap/same_filled_pages:230585
/sys/kernel/debug/zswap/stored_pages:403937
/sys/kernel/debug/zswap/pool_total_size:287670272
/sys/kernel/debug/zswap/duplicate_entry:0
/sys/kernel/debug/zswap/written_back_pages:967347
/sys/kernel/debug/zswap/reject_compress_poor:0
/sys/kernel/debug/zswap/reject_kmemcache_fail:0
/sys/kernel/debug/zswap/reject_alloc_fail:0
/sys/kernel/debug/zswap/reject_reclaim_fail:242
/sys/kernel/debug/zswap/pool_limit_hit:334172

Enable zswap at boot

Install sysfs query tool and boot-time setup.

$ sudo apt install -y sysfsutils

Create zswap configuration.

$ cat <<EOF | sudo tee /etc/sysfs.d/zswap.conf
module/zswap/parameters/enabled = Y
module/zswap/parameters/zpool = z3fold
module/zswap/parameters/compressor = zstd
module/zswap/parameters/max_pool_percent = 20
module/zswap/parameters/same_filled_pages_enabled = Y
EOF
module/zswap/parameters/enabled = Y
module/zswap/parameters/zpool = z3fold
module/zswap/parameters/compressor = zstd
module/zswap/parameters/max_pool_percent = 20
module/zswap/parameters/same_filled_pages_enabled = Y

By anup

Leave a Reply

Your email address will not be published. Required fields are marked *