The point is compression.
% swapon
NAME TYPE SIZE USED PRIO
/dev/nvme0n1p2 partition 8G 0B 5
/dev/sda2 partition 32G 0B -2
/dev/zram1 partition 3.5G 1.8G 32767
/dev/zram2 partition 3.5G 1.8G 32767
/dev/zram3 partition 3.5G 1.8G 32767
/dev/zram4 partition 3.5G 1.8G 32767
/dev/zram5 partition 3.5G 1.8G 32767
/dev/zram6 partition 3.5G 1.8G 32767
/dev/zram7 partition 3.5G 1.8G 32767
/dev/zram8 partition 3.5G 1.8G 32767
% zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram8 zstd 3.5G 293.4M 189.2M 192.5M [SWAP]
/dev/zram7 zstd 3.5G 282.1M 187.5M 192M [SWAP]
/dev/zram6 zstd 3.5G 284.6M 189.4M 192.9M [SWAP]
/dev/zram5 zstd 3.5G 297.8M 197.3M 200.1M [SWAP]
/dev/zram4 zstd 3.5G 304.9M 202.9M 206.7M [SWAP]
/dev/zram3 zstd 3.5G 300.7M 201.9M 204.6M [SWAP]
/dev/zram2 zstd 3.5G 311.3M 207.2M 210.6M [SWAP]
/dev/zram1 zstd 3.5G 307.9M 210.5M 213.3M [SWAP]
/dev/zram0 zstd <not used for swap>
zswap
is not better than modernzram
in any way. And you can set up the latter with writeback anyway.But that’s not OP’s problem since “swap gets hardly touched” in OP’s case.