Skip to content

Instantly share code, notes, and snippets.

@wommy
Last active May 14, 2025 19:33
Show Gist options
  • Save wommy/47b2a8a7805e81b447472539451b992f to your computer and use it in GitHub Desktop.
Save wommy/47b2a8a7805e81b447472539451b992f to your computer and use it in GitHub Desktop.
#!/usr/bin/bash
## Watch This Space || full write-up, accompanying explainer doc coming soon
### zram kernel optimizations
## https://github.com/garyexplains/examples/blob/master/how_to_enable_ZRAM_Raspberry_Pi.md#kernel-parameters-to-make-better-use-of-zram
cat << 'EOF' | sudo tee /etc/sysctl.d/99-vm-zram-parameters.conf
vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
vm.page-cluster = 0
EOF
### zram-tools, or ez-mode
sudo apt install -y zram-tools
sudo sed -i -e 's/#PERCENT=50/PERCENT=175/' /etc/default/zramswap
## https://github.com/NixOS/nixpkgs/pull/351002#issuecomment-2563183156
## NOTE __ ram usage percentage : 150 seems on the lower end
## TUDO :: revisit w/ hard data
#sudo sed -i -e 's/#ALGO=lz4/ALGO=zstd/' /etc/default/zramswap
## NOTE __ zstd > lz4 is workload dependant
## TUDO :: revisit w/ hard data
###
### COMING SOON -- systemd/zram-generator, or hard mode
###
# sudo apt install -y systemd-zram-generator
## LINKS
## https://wiki.archlinux.org/title/Zram#Using_zram-generator
## https://github.com/systemd/zram-generator/blob/main/zram-generator.conf.example
## -- lesser misc links, unsorted, to get to
## google zram recompress huge idle huge_idle
## https://github.com/systemd/zram-generator/issues/164
## https://github.com/ValveSoftware/SteamOS/issues/899
## https://www.reddit.com/r/Ubuntu/comments/1dduz30/how_to_increase_zram_compression/
## TUDO :: write a few sed's to convert defaults into optimized
## -- sudo sed -i -e 's/before/after/' /etc/systemd/zram-generator.conf
## 1. zram-size = ram * 2
## https://github.com/NixOS/nixpkgs/pull/351002#issuecomment-2563183156
## 2. compression-algorithm = lz4
## 2a compression-algorithm = lz4 zstd(level=9)
## https://docs.kernel.org/admin-guide/blockdev/zram.html#recompression
## note: recompression without optimized parameters ~= regressions
## OPTIONAL / AT A LATER DATE
## 3. replace swap with zram writeback
## https://docs.kernel.org/admin-guide/blockdev/zram.html#writeback
## : ditto above regression sentiment
## 4. swap-priority
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment