zram tends to change the calculus of how to setup the memory behavior of your kernel.
On a system with integrated graphics and 8 (16 logical) cores and 32 GB of system memory I achieve what appears to be optimal performance using:
zramen --algorithm zstd --size 200 --priority 100 --max-size 131072 make
sysctl vm.swappiness=180
sysctl vm.page-cluster=0
sysctl vm.vfs_cache_pressure=200
sysctl vm.dirty_background_ratio=1
sysctl vm.dirty_ratio=2
sysctl vm.watermark_boost_factor=0
sysctl vm.watermark_scale_factor=125
sysctl kernel.nmi_watchdog=0
sysctl vm.min_free_kbytes=150000
sysctl vm.dirty_expire_centisecs=1500
sysctl vm.dirty_writeback_centisecs=1500
Compression factor tends to stay above 3.0. At very little cost I more than doubled my effective system memory. If an individual workload uses a significant fraction of system memory at once complications may arise.[deleted]