upvote
enabling != configuring. Are you saying this is all that's necessary, assuming an existing swap device exists? That should be made clearer.

Edit: To be extra clear. When I was researching this, I ended up going with zram only because:

* It is the default for Fedora.

* zramctl gives me live statistics of used and compressed size.

* The zswap doc didn't help my confusion on how backing devices work (I guess they're any swapon'd device?)

reply
It doesn't really need any config on most distros, no.

That said, if you want it to behave at its best when OOM, it does help to tweak vm.swappiness, vm.watermark_scale_factor, vm.min_free_kbytes, vm.page-cluster and a couple of other parameters.

See e.g.

https://makedebianfunagainandlearnhowtodoothercoolstufftoo.c...

https://documentation.suse.com/sles/15-SP7/html/SLES-all/cha...

I don't know of any good statistics script for zswap, I use the script below as a custom waybar module:

  #!/bin/bash
  stored_pages="$(cat /sys/kernel/debug/zswap/stored_pages)"
  pool_total_size="$(cat /sys/kernel/debug/zswap/pool_total_size)"
  compressed_size_mib="$((pool_total_size / 1024 / 1024))"
  compressed_size_gib="$((pool_total_size / 1024 / 1024 / 1024))"
  compressed_size_mib_remainder="$((compressed_size_mib * 10 / 1024 - compressed_size_gib * 10))"
  uncompressed_size="$((stored_pages * 4096))"
  uncompressed_size_mib="$((uncompressed_size / 1024 / 1024))"
  uncompressed_size_gib="$((uncompressed_size / 1024 / 1024 / 1024))"
  uncompressed_size_mib_remainder="$((uncompressed_size_mib * 10 / 1024 - uncompressed_size_gib * 10))"
  ratio="$((100 * uncompressed_size / (pool_total_size + 1)))"
  echo "$compressed_size_gib.$compressed_size_mib_remainder"
reply
deleted
reply