Στο παρόν οδηγό θα δούμε ένα χαρακτηριστικό του πυρήνα Linux με χρήση του zramswap που βελτιώνει την απόκριση αλλά και την εμπειρία χρήσης υπολογιστών με μνήμη RAM μικρότερη των 4G και όχι μόνο.

Το Swap Partition είναι ένας χώρος του δίσκου σας, το οποίο είναι αφιερωμένο στο χειρισμό των συνθηκών στις οποίες θα πρέπει τμήματα της μνήμης RAM να «αδειάσουν» χώρο οπότε και χρησιμοποιεί αυτόν τον χώρο για την αποθήκευσή αυτών των τμημάτων.

Στην πλειονότητα των περιπτώσεων ένα εργαλείο όπως το SystemD-Swap: Για όσους δεν θέλουν SWAP partition είναι η ιδανική λύση μιας και το κάνετε εγκατάσταση και δεν ασχολείστε. Αν όμως θέλετε τον έλεγχο, τότε λογικά θα έχετε ρίξει μια ματιά στον οδηγό Μνήμη RAM: Βελτίωση διαχείρισης με zram – zswap – zcache όπου μιλήσαμε πιο αναλυτικά για τα δύο συστατικά του Systemd-swap, το Zswap και το Zram.

Αν και, στο προαναφερθέν οδηγό είδαμε την εγκατάσταση του zram-config σε Ubuntu/Debian συστήματα στον σημερινό οδηγό θα δούμε πιο αναλυτικά την εγκατάσταση και χρήση του, ειδικά σε Arch Linux διανομές.

Advertisements

Τι είναι το Zram;

Το zram (παλαιότερα ονομαζόταν compcache) του πυρήνα Linux, παρέχει μια συμπιεσμένη συσκευή στη μνήμη RAM.

Εάν το σύστημα ρυθμιστεί να χρησιμοποιεί το zram και ως συσκευή swap τότε η μνήμη RAM μπορεί να κρατάει πολύ περισσότερες πληροφορίες με ελάχιστη, ανεπαίσθητη αύξηση στην χρήση της CPU (λόγο της συμπίεσης δεδομένων). Με άλλα λόγια επειδή η RAM είναι ταχύτερη από τον οποιοδήποτε δίσκο, είναι ταχύτερη η διαχείριση της swap από ότι στον δίσκο.

Επομένως, σε περιπτώσεις όπως οι υπολογιστές με χαμηλή μνήμη RAM όπου γίνεται συχνή η χρήση της SWAP στον δίσκο, η χρήση του Zramswap (που δημιουργεί συμπιεσμένο swap σε zram) θα μπορούσε να βελτιώσει την ταχύτητα (απόκριση) του υπολογιστή. Η χρήση του zram είναι επίσης ένας καλός τρόπος για να μειώσετε τους κύκλους ανάγνωσης / εγγραφής δίσκου σε SSD συστήματα.

Τι είναι το Zramswap;

Το Zramswap είναι ένα απλό bash script [για τον κώδικα βλέπε παραπομπές] το οποίο:

  • ενεργοποιεί το σχετικό άρθρωμα (zram) του πυρήνα,
  • δημιουργεί την συσκευή zram,
  • καθορίζει τον αλγόριθμο συμπίεσης και
  • τέλος φτιάχνει swap αρχείο στην συσκευή αυτή
  • το ρυθμίζει στην μέγιστη προτεραιότητα για χρήση ως swap

Έχει πακεταριστεί για τις περισσότερες διανομές Linux για εύκολη εγκατάσταση και ρύθμιση, και συνήθως αποτελείται από 3 στοιχεία:

  • zramswap.conf : Το αρχείο στο οποίο μπορούμε να ρυθμίσουμε διάφορες «ιδιότητες» του Zramswap
  • zramswap.service: Το unit file του zramswap για το systemd για να ξεκινάμε η να σταματάμε την υπηρεσία
  • zramctl: Το κατεξοχήν bash script που τρέχει το zramswap.service

Εγκατάσταση του Zramswap

Στο Arch Linux είναι διαθέσιμο στο AUR οπότε μπορείτε να το κάνετε εγκατάσταση π.χ. με τον yay helper:

yay -S zramswap

Έπειτα τον ενεργοποιείτε και τον ξεκινάτε:

sudo systemctl enable --now zramswap

Τέλος επιβεβαιώστε ότι έχει ξεκινήσει:

sudo systemctl status zramswap

Ρυθμίσεις του Zramswap

Οι ρυθμίσεις του Zramswap καθορίζονται στο αρχείο /etc/zramswap.conf.

Στο παραπάνω αρχείο θα βρείτε εξορισμού μια μόνο ρύθμιση που είναι το ποσοστό RAM με βάση το οποίο δημιουργείται το μέγεθος της συσκευής zram (20%)

Advertisements

Μια άλλη σημαντική παράμετρος είναι ο αλγόριθμος συμπίεσης. Εξορισμού χρησιμοποιείται η LZO αλλά μπορείτε να διαλέξετε μια άλλη όπως lz4, zstd κλπ. Για παράδειγμα αν θέλετε να χρησιμοποιήσετε το ταχύτατο Zstd τότε βεβαιωθείτε πρώτα ότι έχετε εγκαταστήσει το zstd πακέτο και έπειτα διαβάστε και το αναλυτικό άρθρο σχετικά με το γιατί το Zstd είναι ταχύτατο.

Στην συνέχεια δείτε ποιον αλγόριθμο χρησιμοποιεί τώρα το Zramswap (αυτό που είναι ανάμεσα στις [ ] ):

cat /sys/block/zram0/comp_algorithm

lzo [lzo-rle] lz4 lz4hc 842 zstd

Για να το αλλάξουμε αυτό, αρκεί να ανοίξουμε το αρχείο ρυθμίσεων με το αγαπημένο μας vim:

sudo vim /etc/zramswap.conf

και να προσθέσουμε την ZRAM_COMPRESSION_ALGO=zstd όπως παρακάτω:

προσθέσουμε την ZRAM_COMPRESSION_ALGO=zstd

Κλείνουμε και αποθηκεύουμε το αρχείο πατώντας shift : x και enter.

Κάνουμε μια επανεκκίνηση το σύστημά μας και μόλις ξεκινήσει, στο τερματικό δίνουμε :

lsblk | grep zram

με μετά

cat /sys/block/zram0/comp_algorithm

Για να δούμε ότι όντως έχουμε συσκευή zram, και ότι χρησιμοποιεί τον zstd αλγόριθμο.

χρησιμοποιεί τον zstd αλγόριθμο

Επίλογος

Είδαμε πόσο εύκολα μπορεί να ρυθμιστεί η χρήση μιας συσκευής zram ως συσκευή swap. Αξίζει να σημειωθεί ότι, το zram είναι ένα ώριμο project για το οποίο έχει αποφασίσει η κοινότητα Fedora για την επόμενη έκδοση του Fedora 33 να έχει ενεργή εξορισμού την χρήση της zram.

Παραπομπές:

Κώδικας:

#!/bin/bash

# zramctl -h

if [ -f /etc/zramswap.conf ]; then
  source /etc/zramswap.conf
fi

start() {
  if [ ! "$ZRAM_SIZE_PERCENT" ]; then
    ZRAM_SIZE_PERCENT=20
  fi
  (( MEM_TOTAL= `cat /proc/meminfo|grep MemTotal|awk '{print $2}'` * 1024 ))
  (( MEM= MEM_TOTAL * $ZRAM_SIZE_PERCENT / 100 ))
  modprobe zram
  if [ -n "$ZRAM_COMPRESSION_ALGO" ]; then
    echo "$ZRAM_COMPRESSION_ALGO" > /sys/block/zram0/comp_algorithm
  fi
  echo $MEM > /sys/block/zram0/disksize
  mkswap /dev/zram0 -L zram0
  swapon -p 100 /dev/zram0
}

stop() {
  swapoff /dev/zram0
  rmmod zram
}

case $1 in
  start|stop) "$1" ;;
esac