Απόδοση Raspberry Pi: προσθήκη ZRAM και αλλαγή παραμέτρων πυρήνα

Πριν από μερικές εβδομάδες δημοσίευσα Κριτική Pinebook Pro. Δεδομένου ότι το Raspberry Pi 4 βασίζεται επίσης σε ARM, ορισμένες από τις βελτιστοποιήσεις που αναφέρθηκαν στο προηγούμενο άρθρο είναι αρκετά κατάλληλες για αυτό. Θα ήθελα να μοιραστώ αυτά τα κόλπα και να δω αν αντιμετωπίζετε τις ίδιες βελτιώσεις απόδοσης.

Αφού εγκαταστήσετε το Raspberry Pi στο δικό σας δωμάτιο διακομιστή στο σπίτι Παρατήρησα ότι σε στιγμές έλλειψης RAM δεν ανταποκρινόταν πολύ και πάγωσε. Για να λύσω αυτό το πρόβλημα, πρόσθεσα το ZRAM και έκανα μερικές αλλαγές στις παραμέτρους του πυρήνα.

Ενεργοποίηση ZRAM στο Raspberry Pi

Απόδοση Raspberry Pi: προσθήκη ZRAM και αλλαγή παραμέτρων πυρήνα

ZRAM δημιουργεί ένα μπλοκ αποθήκευσης στη μνήμη RAM με το όνομα /dev/zram0 (ή 1, 2, 3, κ.λπ.). Οι σελίδες που γράφονται εκεί συμπιέζονται και αποθηκεύονται στη μνήμη. Αυτό επιτρέπει πολύ γρήγορη είσοδο/έξοδο και επίσης ελευθερώνει τη μνήμη μέσω συμπίεσης.

Το Raspberry Pi 4 έρχεται με 1, 2, 4 ή 8 GB μνήμης RAM. Θα χρησιμοποιήσω το μοντέλο 1 GB, επομένως προσαρμόστε τις οδηγίες με βάση το μοντέλο σας. Με 1 GB ZRAM, το προεπιλεγμένο αρχείο ανταλλαγής (αργό!) θα χρησιμοποιείται λιγότερο συχνά. Χρησιμοποίησα αυτό το σενάριο zram-swap για εγκατάσταση και αυτόματη διαμόρφωση.

Οδηγίες παρέχονται στο αποθετήριο που συνδέεται παραπάνω. Εγκατάσταση:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

Εάν θέλετε να επεξεργαστείτε τη διαμόρφωση:

vi /etc/default/zram-swap

Επιπλέον, μπορείτε να ενεργοποιήσετε το ZRAM εγκαθιστώντας zram-tools. Εάν χρησιμοποιείτε αυτήν τη μέθοδο, φροντίστε να επεξεργαστείτε τη διαμόρφωση στο αρχείο /etc/default/zramswapκαι εγκαταστήστε περίπου 1 GB ZRAM:

sudo apt install zram-tools

Μετά την εγκατάσταση, μπορείτε να προβάλετε στατιστικά στοιχεία αποθήκευσης ZRAM με την ακόλουθη εντολή:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

Προσθήκη παραμέτρων πυρήνα για καλύτερη χρήση του ZRAM

Τώρα ας διορθώσουμε τη συμπεριφορά του συστήματος όταν το Raspberry Pi μεταβαίνει σε αλλαγή την τελευταία στιγμή, κάτι που συχνά οδηγεί σε παγώματα. Ας προσθέσουμε μερικές γραμμές στο αρχείο /etc/sysctl.conf και επανεκκίνηση.

Αυτές οι γραμμές 1) θα καθυστερήσει την αναπόφευκτη εξάντληση της μνήμης, αυξάνοντας την πίεση στη μνήμη cache του πυρήνα και 2) αρχίζουν να προετοιμάζονται για την εξάντληση της μνήμης νωρίτερα, ξεκινώντας εκ των προτέρων την ανταλλαγή. Αλλά θα είναι πολύ πιο αποτελεσματικό να ανταλλάξετε συμπιεσμένη μνήμη μέσω ZRAM!

Εδώ είναι οι γραμμές που πρέπει να προσθέσετε στο τέλος του αρχείου /etc/sysctl.conf:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

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

sudo sysctl --system

vm.vfs_cache_pressure=500 αυξάνει την πίεση της κρυφής μνήμης, γεγονός που αυξάνει την τάση του πυρήνα να ανακτά τη μνήμη που χρησιμοποιείται για την προσωρινή αποθήκευση αντικειμένων καταλόγου και ευρετηρίου. Θα χρησιμοποιήσετε λιγότερη μνήμη για μεγαλύτερο χρονικό διάστημα. Η απότομη πτώση της απόδοσης αναιρείται από προηγούμενη ανταλλαγή.

vm.swappiness = 100 αυξάνει την παράμετρο πόσο επιθετικά θα ανταλλάσσει ο πυρήνας σελίδες μνήμης, αφού πρώτα χρησιμοποιούμε το ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 - Οι διεργασίες παρασκηνίου θα ξεκινήσουν την εγγραφή αμέσως μόλις φτάσει το όριο του 1%, αλλά το σύστημα δεν θα αναγκάσει τη σύγχρονη I/O μέχρι να φτάσει στο dirty_ratio 50%.

Αυτές οι τέσσερις γραμμές (όταν χρησιμοποιούνται με ZRAM) θα βοηθήσουν στη βελτίωση της απόδοσης, εάν έχετε αναπόφευκτα Η μνήμη RAM τελειώνει και η μετάβαση στην ανταλλαγή ξεκινά, όπως η δική μου. Γνωρίζοντας αυτό το γεγονός και λαμβάνοντας επίσης υπόψη τη συμπίεση μνήμης στο ZRAM κατά τρεις φορές, είναι καλύτερο να ξεκινήσετε αυτήν την εναλλαγή εκ των προτέρων.

Η άσκηση πίεσης στην κρυφή μνήμη βοηθάει επειδή ουσιαστικά λέμε στον πυρήνα: "Γεια, κοίτα, δεν έχω επιπλέον μνήμη για χρήση για την κρυφή μνήμη, γι' αυτό ξεφορτωθείτε το ΤΟ ΣΥΝΤΟΜΟΤΕΡΟ ΔΥΝΑΤΟ και αποθηκεύστε μόνο τα πιο συχνά χρησιμοποιούμενα/σημαντικά δεδομένα."

Ακόμη και με μειωμένη προσωρινή αποθήκευση, εάν με την πάροδο του χρόνου το μεγαλύτερο μέρος της εγκατεστημένης μνήμης είναι κατειλημμένο, ο πυρήνας θα ξεκινήσει ευκαιριακές εναλλαγές πολύ νωρίτερα, έτσι ώστε η CPU (συμπίεση) και η εναλλαγή I/O να μην περιμένουν μέχρι την τελευταία στιγμή και να χρησιμοποιούν όλους τους πόρους ταυτόχρονα όταν είναι πολύ αργά. Το ZRAM χρησιμοποιεί λίγη CPU για συμπίεση, αλλά στα περισσότερα συστήματα με μικρές ποσότητες μνήμης έχει πολύ μικρότερο αντίκτυπο στην απόδοση από την εναλλαγή χωρίς ZRAM.

Εν κατακλείδι

Ας δούμε ξανά το αποτέλεσμα:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

Το 264448 στο ZRAM είναι σχεδόν ένα gigabyte ασυμπίεστων δεδομένων. Όλα πήγαν στο ZRAM και τίποτα δεν πήγε στο πολύ πιο αργό αρχείο σελίδας. Δοκιμάστε αυτές τις ρυθμίσεις μόνοι σας, λειτουργούν σε όλα τα μοντέλα Raspberry Pi. Το άχρηστο, σύστημα κατάψυξης μου έχει μετατραπεί σε λειτουργικό και σταθερό.

Στο εγγύς μέλλον, ελπίζω να συνεχίσω και να ενημερώσω αυτό το άρθρο με ορισμένα αποτελέσματα από τη δοκιμή του συστήματος πριν και μετά την εγκατάσταση του ZRAM. Τώρα απλά δεν έχω χρόνο για αυτό. Στο μεταξύ, μη διστάσετε να εκτελέσετε τις δικές σας δοκιμές και να με ενημερώσετε στα σχόλια. Το Raspberry Pi 4 είναι ένα θηρίο με αυτές τις ρυθμίσεις. Απολαμβάνω!

Σχετικά με το θέμα:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο