Σε περίπτωση που διαθέτετε υπολογιστή με 2GB RAM και λιγότερο πολύ συχνά θα νιώσατε ότι παγώνουν τα πάντα και κάνουν 3 λεπτά να επανέλθουν. Σήμερα λοιπόν θα δούμε τι μπορούν το zram, zswap και zcache να μας προσφέρουν για αυτές τις περιπτώσεις.

Εισαγωγή

Η διαχείριση μνήμης RAM από τον πυρήνα Linux είναι αρκετά βελτιστοποιημένη και η βασική αρχή με την οποία εργάζεται είναι να χρησιμοποιεί όσο μπορεί περισσότερη RAM για τα προγράμματα που χρησιμοποιούμε συχνά. Για αυτό το λόγο συνήθως δημιουργεί εντύπωση σε πολλούς, όταν ανοίγουν την προβολή διεργασιών και βλέπουν ότι μόλις 10-15% ελεύθερη RAM τους έχει μείνει και αρχίζει η παρεξήγηση από την μια ότι το Linux «τρώει» όλη την RAM και ο πανικός απο την άλλη για να βρούμε τρόπους να την αδειάζουμε…

Σε καμία περίπτωση δεν χρειάζεται να την αδειάζουμε. Ο πυρήνας γνωρίζει καλά πότε πρέπει να «ανοίξει» χώρο για νέα προγράμματα και να αδειάσει μέρος του είτε στην SWAP είτε να τα τερματίσει εντελώς.

Εδώ όμως ξεκινάνε λίγο τα προβλήματα. Όταν δηλαδή ο πυρήνας αρχίζει να αδειάζει την μνήμη στο σκληρό δίσκο (στην SWAP), διότι ο σκληρός δίσκος σε καμία περίπτωση δεν είναι γρήγορος όσο η RAM. Το πρόβλημα αυτό είναι ιδιαίτερα αισθητό σε υπολογιστές με χαμηλότερη των 2GB RAM και όταν έχουμε ανοίξει πολλές καρτέλες στον browser μας.  Μπορεί το πρόβλημα να μην είναι αισθητό με 2 -3 προγράμματα που θα ανοίξουμε σε αυτούς τους υπολογιστές, αλλά όταν ανοίγουμε έναν browser τότε μπαίνουμε σε άλλα χωράφια… Μην ξεχνάμε ότι όλες οι ιστοσελίδες και υπηρεσίες είναι εν δυνάμει εφαρμογές που ένα κομμάτι τρέχει στο PC μας. Όταν πάμε λοιπόν να τρέξουμε αυτές τις «εφαρμογές 2016» σε PC του 2000 – 2004 και μνήμη μικρότερη των 2GB τότε θα έχουμε συχνό SWAPing

Για να δείτε ότι οι καρτέλες σας στην πραγματικότητα είναι εφαρμογές που τρέχουν στο PC δοκιμάστε λοιπόν το εξής… μετά από 1 ώρα χρήσης του browser σας:

  1. Ανοίξτε μια νέα καρτέλα
  2. Στην μπάρα διευθύνσεων αν έχετε Firefox γράψτε
    about:memory

    και κάντε κλικ στο κουμπή «mesure»
    Aν έχετε Chrome πατήστε Shift+Esc

Μετά από λίγα δευτερόλεπτα θα δείτε ποιες σελίδες / scripts τρέχουν και πόση μνήμη καταναλώνουν. Θα δείτε λοιπόν ότι οι «ιστοσελίδες» δεν είναι αέρας κοπανιστός αλλά ΕΦΑΡΜΟΓΕΣ.  Ενδεικτικά οι ποιο απαιτητικές ΕΦΑΡΜΟΓΕΣ είναι το gmail (~160ΜΒ), το google plus(~140ΜΒ) και το Facebook (~100ΜΒ) ανά καρτέλα…

Ηθικό δίδαγμα: Έτος 2016 μ.Χ. Οι browser είναι πλατφόρμες όπου τρέχουν ΕΦΑΡΜΟΓΕΣ web. Οι ΕΦΑΡΜΟΓΕΣ αυτές τρώνε μνήμη αλλά και Ι/Ο του συστήματός μας. Όταν πάμε να βάλουμε «ελαφριές διανομές» σε παλιά μηχανήματα τα ανασταίνουμε αλλά όταν ανοίγουμε τον browser να είμαστε έτοιμοι να βαριανασαίνουμε.

Advertisements

Τι είναι τα zram – zswap – zcache

Χωρίς να προσπαθίσουμε να μπούμε σε τεχνικές λεπτομέρειες, που το μόνο που θα προκαλέσουν είναι πονοκέφαλο θα πούμε μόνο γενικά το τι κάνει το καθένα. Το κοινό τους σημείο είναι ότι όλα χρησιμοποιούν την μνήμη RAM (που είναι ταχύτερη απο τον δίσκο) για να αποθηκεύουν δεδομένα τα οποία σε διαφορετική περίπτωση θα χρειαζόταν να αποθηκευτούν στην SWAP.

ZRAM

Το zram (διαθέσιμο για Linux πυρήνα από τις εκδόσεις > 3.14 ) δημιουργεί ένα μικρό SWAP στην μνήμη RAM. Έτσι αντί να αδειάζει την μνήμη στο SWAP του σκληρού δίσκου, το zram έχει προτεραιότητα στο να συμπιέζει τα δεδομένα στην RAM και να τα κρατάει μέχρι που να εξαντληθεί ο χώρος του και να τα αδειάσει στην SWAP.

  • Πλεονεκτήματα: Δεν χρειάζεται να έχετε SWAP σε περίπτωση που έχετε μπόλικη μνήμη (π.χ. >4 GB) διότι θα λειτουργεί ως μνήμη SWAP
  • Μειονεκτήματα: Η φυσική SAWP του δίσκου δεν χρησιμοποιείται σε βέλτιστη μορφή. Αν δηλαδή γεμήσει η zram τότε αντί να αδειάσουν τα παλιότερα δεδομένα της στην SWAP του δίσκου, θα αρχίσουν να εγγράφονται σε αυτήν τα νεότερα δεδομένα ενώ τα παλιά θα παραμείνουν στην zram (κάτι που δεν μας συμφέρει). Τα δεδομένα που θα αρχίσουν να εγγράφονται θα είναι ασυμπίεστα και θα καταναλώνουν πόρους (read/write).

ZSWAP

Το zswap (διαθέσιμο για Linux πυρήνα από τις εκδόσεις > 3.11 ) ακολουθεί διαφορετική προσέγγιση. Το zswap λειτουργεί ως άλλος ένας μηχανισμός write-back cache του δίσκου όπως είχαμε δει σε παλιότερο άρθρο. Συμπιέζει δηλαδή τα δεδομένα που ήταν να γραφτούν στην SWAP του δίσκου και αν εντοπίσει ότι αυτά δεν συμπιέζονται βέλτιστα, τότε τα γράφει στην SWAP του δίσκου. Αν συμπιέζονται τότε παραμένουν στην RAM για ταχύτερη προσπέλαση. Σε περίπτωση που γεμίσει τότε αδειάζει μόνο τα παλιότερα δεδομένα στην SWAP

  • Πλεονεκτήματα: Πολύ καλή διαχείριση της μνήμης RAM και του SWAP στον δίσκο αφού μειώνει σημαντικά τον φόρτο εργασίας για την εγγραφή των δεδομένων στην SWAP.
  • Μειονεκτήματα : Σε αντίθεση με το zram, το zswap χρειάζεται την ύπαρξη του SWAP στον δίσκο.

ZCACHE

Το zcache αποτελεί μια εξελιγμένη (και περίπλοκη θα έλεγα) τεχνική του zswap. Δεν έχει ενσωματωθεί ακόμα στον πυρήνα Linux. Αποτελεί μια υπηρεσία που χρησιμοποιεί το Transcendent memory system(TMS) του Linux πυρήνα. Το TMS παρέχει λειτουργεί ως ένα σύστημα τύπου RAM το οποίο μπορεί να προσπελαστεί μόνο κατά «σελίδες» την φορά, παρά ανά byte όπως γίνεται στην RAM…. Σας έχασα εδώ ε;

Αντί δηλαδή να αποθηκεύονται τα δεδομένα στην μνήμη ως έχουν, αυτά συμπιέζονται πρώτα και αποστέλνονται στην TMS μέσω του zcache. Όταν γεμίσει η μνήμη τότε οι συμπιεσμένες «σελίδες» μεταφέρονται στην μνήμη SWAP…. Μάλλον σας μπέρδεψα ακόμα περισσότερο… :). Με λίγα λόγια : Το zcache είναι σε γενικά πλαίσια καλύτερο από το zswap… Τώρα καλύτερα φαντάζομαι ε; :)

  • Πλεονεκτήματα: Παρέχει συμπιεσμένη αποθήκευση για το SWAP αλλά και για την cache του Συστήματος αρχείων.
  • Μειονεκτήματα: Δεν έχει ενσωματωθεί ακόμα στον πυρήνα λόγο της πολυπλοκότητας του και της πρώιμης κατάστασης στην οποία βρίσκεται η ανάπτυξή του.

Ποιο να διαλέξω τελικά;

Αυτό εξαρτάται γενικά από την σύνθεση του υπολογιστή σας. Σε πολύ γενικές γραμμές και χωρίς να αποτελούν κανόνα μπορείτε να έχετε τον παρακάτω μπούσουλα :

  • ZRAM  όταν δεν έχετε swap partition στο HDD/SSD σας ή εμπειρικά έχετε δει ότι δεν χρειάστηκε ποτέ (συνήθως σε συστήματα με πάνω από 4GB RAM) το σύστημά σας να αποθηκεύσει δεδομένα στην SWAP. Αποτελεί όπως είδαμε μια επιπλέον αλλά συμπιεσμένη SWAP στη μνήμη RAM.
  • ZSWAP όταν πρέπει να έχετε swap partition στο HDD/SSD ( συνήθως σε συστήματα με μικρότερη από 4GB RAM). Αποτελεί όπως είδαμε ένα συμπιεσμένο caching σύστημα για το υπάρχον SWAP του δίσκου.
  • ZCACHE: κάνει ότι κάνει το zswap αλλά με καλύτερη συμπίεση και επιτάχυνση της προσπέλασης της cache του συστήματος αρχείων. Αποτελεί όπως είδαμε μια υπηρεσία τύπου «Virtual RAM» (TMS) και χρησιμοποιείται ως caching σύστημα για την SWAP αλλά και για το σύστημα αρχείων συνολικά.

Πως τα ενεργοποιώ;

Παρότι ο πυρήνας Linux διαθέτει τις απαραίτητες βιβλιοθήκες για την λειτουργία των παραπάνω μηχανισμών διαχείρισης μνήμης, δεν είναι ενεργοποιημένα εξορισμού διότι η αγορά είναι κατακλυσμένη με διαφορετικού τύπου και σύνθεση υπολογιστών και δεν μπορεί να ισχύει ο κανόνας «όλα για όλους». Οπότε πάμε να δούμε πως ενεργοποιούμε το καθένα ανάλογα με τις ανάγκες μας.

ZRAM

Για συστήματα Ubuntu (14.04 και άνω) το μόνο που θα χρειαστεί είναι να κάνετε εγκατάσταση το zram-config το οποίο θα το ρυθμίσει αυτόματα μετά την επανεκκίνηση του PC σας :

sudo apt install zram-config

Μετά απο επανεκκίνηση, αν ανοίξετε το τερματικό και δώσετε `dmesg | grep – zram` θα δείτε κάτι σαν το παρακάτω:

dmesg | grep -i zram
zram: Created 4 device(s)...
[ ] Adding 789879k swap on /dev/zram0. Priority:5 extents:1 across:789879k SSFS
[ ] Adding 789879k swap on /dev/zram1. Priority:5 extents:1 across:789879k SSFS
[ ] Adding 789879k swap on /dev/zram2. Priority:5 extents:1 across:789879k SSFS
[ ] Adding 789879k swap on /dev/zram3. Priority:5 extents:1 across:789879k SSFS

Advertisements

ZSWAP

Για συστήματα Ubuntu (14.04 και άνω) θα χρειαστεί να προσθέσετε μια γραμμή στον εκκινητή GRUB. Στο τερματικό δίνετε:

sudo gedit /etc/default/grub

και εντοπίζετε την γραμμή που λέει GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash»

και προσθέτετε την παράμετρο zswap.enabled=1:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1"
zswap-using-GRUB-configuration-file-Ubuntu

Αποθηκεύετε και κλείνετε τον επεξεργαστή κειμένου. Έπειτα ενημερώνετε τον εκκινητή GRUB για τις αλλαγές:

sudo update-grub

και κάνετε επανεκκίνηση

Για να επιβαιβεώσετε την ενεργοποίηση που κάνατε, μπορείτε στο τερματικό να δώσετε `dmesg | grep i- zswap` όπου θα δείτε κάτι σαν το παρακάτω:

dmesg | grep -i zswap
[ ] Command line: BOOT_IMAGE=/vmlinuz-4.4.0-18-generic root=/dev/mapper/viglen--vg-root ro splash quiet zswap.enabled=1 vt.handoff=7
[ ] Kernel command line: BOOT_IMAGE=/vmlinuz-4.4.0-18-generic root=/dev/mapper/viglen--vg-root ro splash quiet zswap.enabled=1 vt.handoff=7
[ ] zswap: loaded using pool lzo/zbud

ZCACHE

Προσωρινά ξεχάστε το… έχει αφαιρεθεί απο τον πυρήνα Linux. Ξέρω μπορεί να σας άνοιξα την όρεξη αλλά το μήνυμα του Greg στην αναφορά σφάλματος είναι ξεκάθαρο : http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7 Ελπίζουμε οτι στο μέλλον θα μπει ξανά οπότε και θα ενημερώσω το άρθρο.

Επίλογος

Όπως συμβαίνει με τα λογισμικά που χρησιμοποιεί ένας χρήστης έτσι και τα λογισμικά που είναι βαθιά μέσα στον πυρήνα βελτιώνονται και πάντα θα ισχύει ο κανόνας «Υπάρχει πάντα ένας καλύτερος τρόπος από τον υπάρχοντα.» Έτσι είδαμε κάποιες μεθόδους που μπορούν να βελτιώσουν τις επιδόσεις και την εμπειρία χρήσης του υπολογιστή μας με λειτουργικό σύστημα Linux.

Θα ήθελα να ακούσω την εμπειρία σας μετά από ενεργοποίση είτε του ZRAM είτε του ZSWAP ειδικά αν το σύστημά σας διαθέτει μικρότερη από 2GB RAM