Det här sätter du upp
Swap är dit Linux flyttar minne som inte har använts på ett tag när minnet börjar ta slut. Swap på disk är långsam, och en server som swappar mycket dränker disken i läsningar och skrivningar, så att allt på servern blir långsamt. zram håller i stället swap i minnet, komprimerad: det som kärnan flyttar dit tar bara en bråkdel av sin storlek, och när det behövs igen slipper servern vänta på disken.
Vi rekommenderar zram i stället för swap på disk. När du bygger en server i kontrollpanelen hos Melonslab låter du swap vara avstängd, och sätter sedan upp zram enligt stegen nedan.
Varje steg nedan har körts på en VC-P Alloy (2 vCPU, 8 GB) hos Melonslab med Debian 13:
- zram gav servern 7,7 GB swap, komprimerad med zstd.
- Ett program fyllde 8 GB minne, mer än servern har. 1,5 GB av det flyttades till zram, där det tog 368 MB, ungefär en fjärdedel av sin storlek, och inget program stoppades på grund av minnesbrist.
- Inställningarna fanns kvar efter en omstart av servern.
1. Kontrollera om det finns swap på disk
Som root:
swapon --show
Kommandot skriver ingenting när servern saknar swap. Om det listar en fil eller en partition stänger du av den och kommenterar bort dess rad i /etc/fstab, så att den förblir avstängd efter en omstart:
swapoff -a
sed -i '/\sswap\s/s/^/#/' /etc/fstab
Om det var en fil, till exempel /swapfile, kan du ta bort den efteråt med rm /swapfile.
2. Installera zram-generator
apt update
apt install -y systemd-zram-generator
Paketet slår på zram direkt, med Debians standardinställningar: halva minnet, högst 4 GB, komprimerat med kärnans standardalgoritm lz4. Nästa steg ersätter dem.
3. Välj storlek och komprimering
Skapa /etc/systemd/zram-generator.conf:
[zram0]
zram-size = min(ram, 8192)
compression-algorithm = zstd
zram-size anges i megabyte: lika mycket som serverns minne, högst 8 GB, vilket är Fedoras standard. Värdet anger hur mycket som kan flyttas till zram innan det komprimeras, inte hur mycket minne det tar. zstd komprimerar bättre än lz4, mot lite mer processortid.
Skapa sedan /etc/sysctl.d/99-zram.conf:
vm.swappiness = 180
vm.page-cluster = 0
Ett värde på vm.swappiness över 100 talar om för kärnan att det är billigare att swappa till zram än att släppa filer ur cachen, vilket kärnans dokumentation föreslår för swap i minnet. vm.page-cluster = 0 hindrar kärnan från att läsa i förväg ur swap, vilket hjälper på en disk men bara är onödigt arbete i minnet.
4. Starta om och kontrollera
Den nya storleken och komprimeringen gäller först när zram sätts upp igen, så starta om servern:
systemctl reboot
Logga in igen och kontrollera:
swapon --show
zramctl
swapon --show listar /dev/zram0 som enda swap, och zramctl visar zstd under ALGORITHM. När minnet är hårt belastat visar DATA hur mycket som har flyttats till zram, och COMPR hur mycket minne det tar:
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 7.7G 1.5G 368.3M 379.8M 2 [SWAP]
Felsökning
zramctl visar lz4 och halva minnet. zram körs fortfarande med standardinställningarna från när du installerade paketet. Starta om servern, som i steg 4.
swapon --show listar fortfarande swap på disk efter en omstart. Dess rad i /etc/fstab är fortfarande aktiv. Gör om steg 1 och starta om.