zRAM on Linux

Activați zRAM pentru o performanță mai bună

zRAM este un modul al nucleului Linux care permite crearea de Swap pe memoria RAM pentru a oferi o performanță mai bună.

Dar problema este că nu doar le creează acolo, ci le și comprimă, astfel încât sistemul să poată stoca mai multe date în memorie, ceea ce permite accesarea acestor date mult mai rapid decât un swap tradițional pe dispozitive SSD sau HDD.

La rândul său, acest lucru duce la o performanță mai rapidă a sistemului în general. Timpul de compresie și decompresie este, în general, neglijabil. Așadar, aveți senzația că sistemul dvs. are brusc mai multă memorie de utilizat.

zRAM este deosebit de utilă pentru sistemele cu memorie redusă, cum ar fi 2 GB, 4 GB sau 8 GB de RAM. Astfel de sisteme vor descoperi că pot respira mai mult prin utilizarea unui dispozitiv zRAM Swap comprimat.

Ar trebui să știți că există mulți algoritmi de compresie a datelor disponibili pentru zRAM, cum ar fi zstd, zlib, brotli, lz4 și alții, și fiecare dintre ei are puncte de performanță diferite (unii sunt buni la scrierea datelor, alți la decomprimarea datelor etc.). Vom vedea mai târziu cum să folosim acești algoritmi.

Activarea zRAM

În acest articol, vom vedea cum putem activa zRAM pe diferite distribuții Linux.

Verificarea dacă zRAM este activat

Multe distribuții Linux au deja zRAM activat, așa că nu veți dori să faceți din nou acest efort și să încercați să o activați.

Pentru a verifica dacă este actiat sau nu pe sistemul dvs., rulați umrătoarea comandă:

cat /proc/swaps

Dacă vedeți un rezultat care conține „/dev/zram0” sau ceva similar, înseamnă că aveți zRAM deja activat pe sistem.

În caz contrar, continuați să citiți pentru a afla cum îl puteți activa.

Dezactivați partiția/fișierul swap

Utilizatorii sunt sfătuiți să creeze o partiție Swap sau un fișier Sawp atunci când își configurează pentru prima dată distribuția Linux, pentru a susține memoria RAM atunci când utilizare ei este prea mare.

Cu toate acestea, Swap pe SSD/HDD este destul de lent în comparație cu memoria RAM.

Nu dorim ca sistemul nostru să utilizeze partiția Swap tradițional, ci să utilizeze dispozitivul zRAM pe care îl vom crea mai târziu, așa că trebuie să dezactivăm SWAP-ul pentru a evita un conflict.

În primul rând, localizați Swap în fișierul /etc/fstab.

sudo nano /etc/fstab

Apoi, comentați linia care conține codul Swap prin inserarea simbolului # la începutul liniei, așa cum este în exemplul de mai jos.

UUID=630d71a8-1a3a-442e-9f9c-9205266f05d2 /          ext4   errors=remount-ro 0 1
UUID=3D16-2055                            /boot/efi  vfat   umask=0077        0 1
#/swapfile                                 none       swap   sw                1 1   

Pentru a salva fișierul și a ieși, trebuie să apăsați combinația de taste Ctrl+X, să apăsați tasta Y și apoi Enter.

Acum, dezactivați și fișierul Swap care rulează, rulând comanda:

sudo swapoff /swapfile
Notă:
Dacă utilizați un alt punct de montare decât /swapfile pentru Swap, înlocuiți-l în comanda anterioară.

Activare zRAM pe Debian/Ubuntu

Puteți activa cu ușurință zRAM Swap prin instalarea pachetului zram-config. Acesta este disponibil în toate distribuțiile bazate pe Debian sau Ubuntu.

Pentru a instala, rulați comanda în terminal:

sudo apt install zram-config

Apoi reporniți calculatorul.

Acest lucru va crea zona zRAM Swap de jumătate din dimensiuea memoriei RAM. Astfel, de exemplu, dacă aveți 8 GB RAM, dimensiunea va fi de 4 GB.

Acum ar trebui să vedeți că aveți zRAM activat.

cat /proc/swaps
Filname     Type       Size     Used  Priority
/dev/zram0  partition  2779300  0     1

De asemenea, îl puteți vedea în aplicația GNOEM System Monitor (apare ca Swap, dar este de fapt zRAM).

zRAM appears as a Swap in GNOME System Monitor

Dacă doriți, puteți personaliza opțiunile de configurare a zRAM. Toate modificările trebuie să aibă loc în fișierul /usr/bin/init-zram-swapping.

sudo nano /usr/bin/init-zram-swapping
#!/bin/sh

modprobe zram

# Calculate memory to use for zram (1/2 of ram)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//'`
mem=$((totalmem / 2 * 1024))

# initialize the device
echo $sem > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon -p 5 /dev/zram0

Scoateți / 2 dacă doriți să utilizați toată memoria (nu este recomandat decât dacă aveți doar 8 GB sau mai puțin de RAM).

De asemenea, puteți modifica algoritmul implicit de compresie care este utilizat.

Puteți afla algoritmii de compresia pe care sistemul dvs. îi acceptă cu următoarea comandă, precum și cel folosit implicit.

cat /sys/block/zram0/comp_algorithm

Algoritmul implicit utilizat în Ubuntu și de instrumentul zram-config este zstd, dar îl puteți schimba cu altul, dacă doriți adăugând următoarea comandă sub linia care începe cu mem=$.

echo lz4 > /sys/block/zram0/comp_algorithm

Puteți înlocui lz4 cu orice alforitm doriți. Ar trebui să arate ca mai jos:

#!/bin/sh

modprobe zram

# Calculate memory to use for zram (1/2 of ram)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//'`
mem=$((totalmem / 2 * 1024))
echo lz4 > /sys/block/zram0/comp_algorithm

# initialize the device
echo $sem > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon -p 5 /dev/zram0

Salvați fișierul și reporniți sistemul.

Activare zRAM pe Fedora

zRAM Swap este activat în mod implicit în Fedora.

Acest lucru se face cu ajutorul instrumentului zram-generator, care este instalat în mod implicit în Fedora. Puteți vizualiza setările sale implicit și le puteți modifica în funcție de nevoile dvs. din fișierul zram-generator.conf.

sudo nano /usr/lib/systemd/zram-generator.conf
# This config file enables a /dev/zdram0 device with the default settings:
# - size - same as aviable RAM or 8GB, whichever is less
# - compression - most likely lzo-rle
#
# To disable, uninstall zram-generator-defaults or create empty
# /etc/systemd/zram-generator.conf file.
[zram0]
zram-size = min(ram, 8192)

După cum puteți vedea, fișierul este în mare parte gol. Singura setare implicită este legată de dimensiune: Fie 8GB, fie dimensiunea memorie dvs., dacă este mai mică sau egală cu aceasta.

La fel cum am explicat anterior, puteți afla care sunt algoritmii de compresie disponibili pe sistemul dvs. cum următoarea comandă, iar cel implicit va fi cuprins între paranteze:

cat /sys/block/zram0/comp_algorithm

Puteți modifica algoritmul de compresie utilizat adăugând următoarea linie la fișierul /usr/lib/systemd/zram-generator.conf.

compression-algorithm = lz4

Salvați fișierul și reporniți sistemul.

Activare zRAM pe openSUSE

Pe openSUSE, aveți nevoie de pachetul systemd-zram-service instalat pentru a activa zRAM SWAP. Îl puteți instala cu următoarea comandă:

sudo zypper in systemd-zram-service

Și activați-l cu comanda:

sudo zramswapon

Poate doriți să citiți această postare despre alte modificări pe care ar trebui să le faceți pe openSUSE.

zRAM pe Pop!_OS

zRAM este deja activa în mod implicit și pe Pop!_OS.

Echipa din spatele distribuției a făcut de fapt efortul de a ajusta setările de dimensiune, algoritm și swapiness astfel încât acestea să fie optime în mod implicit. Nu este nimic de făcut din partea dvs.

Acest lucru se face cu ajutoru pachetului pop-default-settnings-zram, care are setările implicit stocate în următorul fișier:

sudo nano /etc/default/pop-zram

Puteți edita fișierul respectiv dacă doriți să modificați ceva.

zRAM Swap pe alte distribuții Linux

Utilizatorii Gentoo pot consulta wiki-ul pentru a afla cum să activeze zRAM. Gentoo nu utilizează systemd în mod implicit, motiv pentru care este necesară o ajustare suplimentară.

Utilizatorii Arch Linux pot consulta și ei propriul wiki cu privire la modul de activare.

Pentru alte distribuții, poate doriți să verificați utilitarul zram-generator. Acesta face parte din ecosistemul systemd, așa că ar trebui să funcționeze fără probleme pe orice distribuție care folosește systemd.

Schimbarea nivelului de swapiness

Deoarece datele din zRAM vor fi comprimate, trebuie să ne asigurăm că zona zRAM SWAP nou creată va fi umplută înainte de zona goală din RAM.

Swapiness este o setare de sistem din distirbuțiile Linux care îi spune sistemului când să înceapă să umple zona Swap (în cazul nostru, zona Swap zRAM).

Un swapiness de 0 înseamnă că va începe să se umple numai atunci când utilizarea memoriei este în jur de 100%, în timp ce un swapiness de 100 înseamnă că se va umple instantaneu.

De fapt, dorim mai mult decât atât; dorim ca datele să fie întotdeauna completate în zona zRAM înainte ca orice date să fie scrise în memoria RAM necomprimată.

Așadar, ar trebui să folosim o valoare de 150 pentru swapiness (nu înseamnă 150% din RAM, ci încurajarea nucleului să facă swap mai des.).

Pentru a face acest lucru (pe orice distribuție Linux), adăugați următoarea linie în fișierul /etc/systctl.conf:

vm.swappiness = 150

Apo reporniți sistemul.

De final

Am văzut până acum cum să activăm zonele zRAM Swap pe diferite distribuții Linux, precum și câteva setări pe care le putem ajusta pentru a obține performanțe mai bune.

zRAM este o tehnologie uimitoare. Mulți posesori de calculatoare vechi raportează că i-a ajutat să obțină o performanță și o stabilitate mai bună a sistemului odată ce a fost activată, așa că ar trebui să o încercați cu siguranță dacă nu ați activat-o deja.

Dacă aveți o cantitate mare de memorie RAM pe sistem (32 GB sau mai mult), atunci poate că nu aveți nevoie să folosiți zRAM și este posibil să vă afecteze negativ performanța (din cauza timpului de compresie și decompresie).

Dar în afară de aceasta, ar trebui să vă ofere o performanță mai bună, deoarece schimbarea (pe care sistemul o va face adesea pe cantități mai mici de memorie RAM) în RAM este mai rapidă decât schimbarea pe disc.

ThinkRoot99

Numele meu este Cristian Moldovan și sunt utilizator de Linux de peste 10 ani.Am făcut parte din mai multe echipe open source din România: Fundația Ceata, Linux Mint România, Rogentos Linux Group. Între 2014 și 2018 am fost propietarul și editorul site-ului de știri despre linux, gnulinux.ro și actual proprietar al rootlinux.ro

View all posts by ThinkRoot99 →

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *