Σήμερα θα δούμε μερικούς μύθους σχετικά με διάφορες βελτιστοποιήσεις και ρυθμίσεις για SSD στο Linux τα οποία βλέπω να επαναλαμβάνονται εδώ και χρόνια ακόμα και σήμερα που οι SSD δεν έχουν καμία σχέση με αυτούς που κυκλοφορούσαν πριν 3-5 χρόνια. Πόσο μάλλον όταν οι διανομές που έχουμε είναι εξοπλισμένες με την σειρά 4+ του Linux kernel.

Πρόλογος

Με την πτώση των τιμών στους SSD δίσκους που είδαμε τα τελευταία χρόνια, ήταν αναμενόμενο ότι τους έκανε πιο προσιτούς στο ευρύ κοινό ενώ πολλοί υπολογιστές πλέον είναι ήδη εξοπλισμένοι με αυτούς.

Τον πρώτο καιρό ειδικά πριν την έκδοση του πυρήνα 3.7, άρχισαν να κυκλοφορούν διάφορες συμβουλές για ρυθμίσεις βελτιστοποίησης του Linux ώστε να μην επιβαρύνουν τον SSD. Όλα φυσικά εστιάζουν στην βασική αρχή του περιορισμένου αριθμού εγγραφών που αντέχει ένας SSD οπότε οι συμβουλές έχουν στόχο την μείωση των εγγραφών που κάνει το σύστημά μας για την αύξηση χρόνου ζωής τους.

Ισχύουν όμως; Πόσο κοντά είναι στην πραγματικότητα;

tl;dr: Αγοράσατε έναν SSD και θέλετε να κάνετε εγκατάσταση την αγαπημένη σας διανομή και έχετε απορίες για ρυθμίσεις οπότε ανατρέχετε σε διάφορες συμβουλές και tweaks/tips/tricks για το πως να φροντίσετε τον SSD δίσκο σας;

Ωραία… σταματήστε να διαβάζετε συμβουλές και κάντε την εγκατάσταση… και έπειτα συνεχίστε παρακάτω. Δεν χρειάζεται να κάνετε καμία ρύθμιση για SSD στην διανομή σας. Αυτά. Τέλος άρθρου.

Από την μια οι κατασκευαστές των SSD έχουν φροντίσει ώστε η διάρκεια ζωής τους να αντέχει 100δες TB εγγραφών ενώ οι προγραμματιστές του Linux βελτιώνουν συνεχώς τα συστήματα αρχείων για να εκμεταλλεύονται κάθε νέο χαρακτηριστικό του SSD. Τέλος, οι άνθρωποι που τα μαζεύουν όλα και φτιάχνουν την διανομή που χρησιμοποιείτε, έχουν συμπεριλάβει όλες τις απαραίτητες ρυθμίσεις και γνωρίζουν πως θα πρέπει να συμπεριφέρεται το λειτουργικό τους όταν γίνεται εγκατάσταση σε SSD.

Αφού λοιπόν δεν αρκείστε με το tl;dr, ας δούμε λοιπόν τις διάφορες ρυθμίσεις σε SSD που πλέον ΔΕ χρειάζεται να κάνει κανείς και γενικά διάφορους μύθους και αλήθειες σχετικά με αυτούς.

Advertisements

Block Alignment – Ευθυγράμμιση των Block

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

Πολλοί εξακολουθούν να πιστεύουν ότι η ευθυγράμμιση των διαμερισμάτων είναι απαραίτητη για SSD. Ωστόσο, αυτό δεν είναι απαραίτητο. Το πρόβλημα με την ευθυγράμμιση εμφανίζεται όταν μεταφέρουμε αυτούσιο μια εγκατάσταση Linux από έναν τυπικό δίσκο HDD σε SSD (π.χ. με CloneZilla) και σε εποχές προ 2013. Ποιος όμως το κάνει αυτό; Δεν νομίζω ένας απλός χρήστης που κάνει αναζήτηση για «ρυθμίσεις SSD σε Linux» να γνωρίζει την χρήση του CloneZilla. Διότι πολύ απλά αν το γνωρίζει, ήδη ξέρει τι πρέπει να κάνει.

Το θέμα είναι η γενίκευση που γίνεται και ότι «πάντα» μετά από μια νέα εγκατάσταση Linux σε SSD, θα πρέπει να δούμε αν τα διαμερίσματα είναι ευθυγραμμισμένα στο SSD. Αντιθέτως πολλά από τα κοινά εργαλεία διαμέρισης (partitioning) το κάνουν αυτόματα.

Ωστόσο, είναι εύκολο να το ελέγξετε με το εργαλείο blockdev:

Πρώτα, δείτε τα ονόματα των διαμερισμάτων:

lsblk

και έπειτα με το εργαλείο blockdev δείτε την ευθυγράμμιση

 blockdev --getalignoff /dev/sdX

Εάν η επιστρεφόμενη τιμή είναι «0«, τα διαμερίσματα είναι ευθυγραμμισμένα.

Απενεργοποίηση του Swap partition

Ένας από τους μεγαλύτερους μύθους είναι αυτός που έχει να κάνει με την απενεργοποίηση του SWAP στο Linux όταν έχουμε SSD και ειδικά σε συνδυασμό με αυτούς που έχουν πάνω από 4GB Ram.

ruthmiseis-beltistopoihseis-ssd-linux3

Επειδή οι SSD, όπως είπαμε έχουν συγκεκριμένο αριθμό εγγραφών που αντέχουν, είχε ξεκινήσει από παλιά ο μύθος ότι ΠΡΕΠΕΙ να απενεργοποιούμε το SWAP και ότι δεν το χρειαζόμαστε. Στην πραγματικότητα η ύπαρξη του Swap μόνο καλό κάνει παρά κακό. Το Swap είναι μια περιοχή του δίσκου που καθ’όλη την διάρκεια λειτουργίας του υπολογιστή σας μέσα σε μια μέρα, θα χρησιμοποιηθεί από καθόλου έως ελάχιστες φορές για μερικά συνήθως MB.

Με άλλα λόγια πιο πολλές εγγραφές κάνετε εσείς με την χρήση διάφορων εφαρμογών (browser, επεξεργασία, log files κλπ) παρά το ίδιο το Swap. Οπότε χαλαρώστε…

Υπάρχουν φορές για παράδειγμα που κάποια εφαρμογή, ή κάποια κακογραμμένη ιστοσελίδα θα αρχίσει να γεμίζει την RAM ενώ εσείς ανέμελα γράφετε την εργασία σας. Εάν δεν έχετε Swap, το οποίο θα αναλάβει το βαρύ φορτίο να παραλαμβάνει δεδομένα της RAM, πολύ πιθανόν το σύστημά σας θα «παγώσει» και αναγκαστικά θα πρέπει να κλείσετε τον υπολογιστή χειροκίνητα με αποτέλεσμα, να χάσετε την εργασία σας και το χειρότερο να προκληθεί κάποια μη αναστρέψιμη καταστροφή από την απότομη διακοπή ρεύματος (πράγμα ευτυχώς σπάνιο).

Γιαυτό λοιπόν, δεν χρειάζεται να κάνετε τίποτα. Η διανομή σας και ο πυρήνας Linux είναι αρκετά καλά ρυθμισμένος για εσάς με διάφορους αυτοματισμούς που εξασφαλίζουν την βέλτιστη συμπεριφορά του Swap και της μνήμης RAM. Τα πράγματα θα γίνουν ακόμα καλύτερα όταν οι περισσότερες διανομές θα περάσουν στο λεγόμενο Swap file αντί να έχουν Swap partition. Σε περίπτωση που θέλετε να το κάνετε τώρα μπορείτε να διαβάσετε τον οδηγό «Systemd-swap: για αυτούς που δεν θέλουν swap partition«.

Ρύθμιση του Swapiness κοντά στο 0

ruthmiseis-beltistopoihseis-ssd-linux4

Η ρύθμιση αυτή έχει να κάνει με την προτεραιότητα που θα έχει η χρήση η όχι του Swap. Στην πραγματικότητα η ρύθμιση αυτή καθεαυτή δεν είναι μύθος αλλά οι διάφορες συμβουλές δεν αποτελούν κανόνα.

Με άλλα λόγια, οι περισσότερες διανομές έχουν δει ότι η ρύθμιση του στο 60 αποτελεί ιδανική επιλογή για γενικού σκοπού desktop.

Μπορείτε να δείτε την ρύθμιση που έχετε με την εντολή:

cat /proc/sys/vm/swappiness
60

Σε γενικές γραμμές, οι περισσότερες συμβουλές που θα βρείτε λένε είτε να το βάλετε 1είτε να το ρυθμίσετε όσο πιο κοντά στο 0. Το πρόβλημα με τέτοιου είδους ρυθμίσεις είναι ότι κάθε υπολογιστής, κάθε λειτουργικό είναι εντελώς διαφορετικός. Ακόμα και την ίδια διανομή να έχουμε, έχουμε διαφορετικές εφαρμογές και υπηρεσίες που εκτελούνται στον υπολογιστή σας.

Απενεργοποίηση του browser cache

Η απενεργοποίηση του browser cache για να μειώσουμε τις εγγραφές στον SSD, δυστυχώς έχει τα αντίθετα αποτελέσματα.

ruthmiseis-beltistopoihseis-ssd-linux5

Ο αγαπημένος browser σας είναι ρυθμισμένος, να κατεβάζει ΜΙΑ φορά την ιστοσελίδα στον δίσκο ώστε την επόμενη φορά που θα το επισκεφθείτε (αν δεν έχει αλλάξει δραματικά κάτι) να φορτώνει πιο γρήγορα και να μην χρειάζεται να το ξανά κατεβάσει όλο.

Αν το απενεργοποιήσουμε, ώστε να γλυτώσουμε εγγραφές, τότε το μόνο που θα καταφέρουμε είναι να τις αυξήσουμε διότι κάθε φορά που επισκεπτόμαστε την ιστοσελίδα, αυτή θα γίνεται από την αρχή λήψη, εγγραφή και ταυτόχρονα θα δούμε την καθυστέρηση που αναφέραμε.

Κυκλοφορούν διάφορες λύσεις, που χρησιμοποιούν την RAM για browser cache και όταν κλείνουμε τον υπολογιστή αυτά γράφονται στον δίσκο. Όσες φορές το έχω χρησιμοποιήσει το μόνο που κατάφερα είναι να γεμίζει η RAM και να αρχίσουν άσκοπες εγγραφές στην Swap.

Advertisements

SSD Trim

Εδώ και αν γίνεται πανικός από αντικρουόμενες συμβουλές. Τι είναι το SSD Trim;

Το TRIM είναι μια λειτουργία την οποία μπορεί να χρησιμοποιήσει το λειτουργικό σύστημα για να ενημερώσει το SSD μας, για το ποια blocks δεν χρησιμοποιούνται πλέον.

ruthmiseis-beltistopoihseis-ssd-linux6

Σε έναν παραδοσιακό σκληρό δίσκο, το λειτουργικό σύστημα δεν χρειάζεται να πει στο δίσκο ποια block δεν χρησιμοποιούνται πλέον, επειδή οι σκληροί δίσκοι μπορούν να «γράψουν» πάνω από τις παλιές πληροφορίες χωρίς επίπτωση στην απόδοση. Τα SSD δεν μπορούν να εκτελέσουν αντικατάσταση παλαιών δεδομένων. Όταν ένα SSD χρειάζεται να γράψει νέες πληροφορίες σε ένα υπάρχον block, θα αντιγράψει τα περιεχόμενα του block σε μια νέα καθαρή τοποθεσία. Εάν δεν υπάρχουν καθαρά μπλοκ στα οποία πρέπει να γράψει, το SSD πρέπει να διαγράψει ένα block που έχει προηγουμένως επισημανθεί ως μη έγκυρο και να μετακινήσει τα δεδομένα με τις αλλαγές, να ενημερώσει τη σύστημα αρχείων και να επισημάνει το παλιό πλέον μπλοκ ως μη έγκυρο.

Αυτή η λειτουργία «Διαγραφή πριν από την εγγραφή», που ονομάζεται επίσης garbage collection, μπορεί να προκαλέσει μικρή καθυστέρηση και κατά συνέπεια να μειώσει την απόδοση του δίσκου. Το TRIM προσπαθεί να περιορίσει αυτό το αποτέλεσμα επιτρέποντας στο λειτουργικό σύστημα να πει στο SSD ποια τμήματα δεν χρησιμοποιούνται πλέον. Με αυτό τον τρόπο η μονάδα μπορεί να κάνει συλλογή σκουπιδιών στο παρασκήνιο, έτσι ώστε όταν η μονάδα χρειάζεται να γράψει νέα δεδομένα, τα μπλοκ έχουν ήδη σβηστεί.

Η πλήρης υποστήριξη για το TRIM προστέθηκε στον πυρήνα του Linux στην έκδοση 3.7. Η πιθανότητα να κάνετε εγκατάσταση σε SSD μια διανομή με τόσο παλιό πυρήνα, μάλλον είναι απίθανη.

Το TRIM δεν θα πρέπει να είναι κάτι που σας απασχολεί μιας και όλες σχεδόν η διανομές έχουν αυτοματοποιήσει την διαδικασία και πολύ πιθανόν να έχουν ρυθμίσει το λειτουργικό να το εκτελεί μια φορά την εβδομάδα.

I/O Scheduler δίσκου

Ο I/O scheduler δίσκου μέσα στον πυρήνα Linux, είναι κατά κάποιον τρόπο ο ρυθμιστής των προτεραιοτήτων στα αιτήματα που κάνουμε ως χρήστες (π.χ. άνοιξε το τάδε αρχείο), τα αιτήματα του πυρήνα, των υπηρεσιών και συσκευών όταν «ζητάνε» κάτι από τον δίσκο.

ruthmiseis-beltistopoihseis-ssd-linux7

Ο πυρήνας Linux διαθέτει διάφορους scheduler για τον δίσκο, όπως ο CFQ, BFQ, Kyber, NOOP, Deadline. Οι περισσότερες διανομές Linux χρησιμοποιούν τον CFQ ως προεπιλογή, ενώ άλλες χρησιμοποιούν Deadline. Οι περισσότερες συμβουλές που θα βρείτε για SSD λένε να το αλλάξετε από CFQ σε NOOP scheduler για να βελτιώσετε την απόδοση του SSD, αφαιρώντας την επίδραση αναμονής της CFQ. Ωστόσο, φαίνεται ότι πολλοί παραβλέπουν ότι ο CFQ έχει ενσωματωμένη υποστήριξη SSD:

«Το CFQ έχει κάποιες βελτιστοποιήσεις για SSD όπως π.χ. να μειώνει την αδράνεια των μεμονωμένων αιτημάτων ..» – CFQ Docs

Σύμφωνα με τον δημιουργό της CFQ, αυτή η υποστήριξη προστέθηκε το φθινόπωρο του 2008. Θα συνιστούσα να ελέγξετε τη διαμόρφωσή σας, για να δείτε ποιος scheduler σας δίνει καλύτερη απόδοση με τον SSD παρά να ακολουθείστε τυφλά μια συμβουλή. Παράδειγμα στο δικό μου σύστημα :

cat /sys/block/sda/queue/scheduler

mq-deadline kyber [bfq] none

Αυτό που είναι σε […] είναι αυτό που τρέχει το σύστημά μου ως IO scheduler. Σε γενικές γραμμές με έναν SSD δεν θα δείτε αισθητή διαφορά γιατί πολύ απλά οι SSD είναι ταχύτατοι.

Επίσης ο πυρήνας Linux, έτσι όπως διαχειρίζεται την μνήμη RAM, συνήθως αυτό που χρειάζεστε ως απλώς χρήστης, είναι ήδη στην μνήμη RAM και δεν θα χρειαστεί να διαβαστεί ο δίσκος.

Με άλλα λόγια, παρατηρήστε το στο δικό σας σύστημα είτε με το «λαμπάκι» χρήσης του δίσκου στο PC σας είτε με το εργαλείο Dstat.

sudo dstat -D sda

Θα δείτε ότι καθ’όλη την διάρκεια της ημέρας ο δίσκος χρησιμοποιείται ελάχιστες φορές. Οπότε για έναν καθημερινό χρήστη desktop δεν χρειάζεται να κάνει τίποτα.

Προσθήκη noatime και nodirtime στο fstab

ruthmiseis-beltistopoihseis-ssd-linux8

Κάθε φορά που όταν ανοίγουμε ένα αρχείο ή κάνουμε μια εγγραφή σε έναν φάκελο, ο δίσκος μας κάνει μια εγγραφή με την ημερομηνία και την ώρα που είχαμε πρόσβαση σε αυτά. Θα δούμε λοιπόν διάφορες συμβουλές που μας λένε να προσθέσουμε noatime και nodirtime οι οποίες απενεργοποιούν την ενημέρωση αυτή (άρα εγγραφή) στον SSD. Επίσης θα δείτε να λένε να τα προσθέσετε και τα δυο ενώ στην πραγματικότητα το noatime περιλαμβάνει και το nodirtime.

Αν το προσθέσουμε, θα γίνει κάτι; Από θέμα επιδόσεων, πολύ πιθανόν όχι. Δεν θα δούμε διαφορά σε έναν SSD διότι όπως είπαμε αυτές οι εγγραφές είναι μερικά KB (ημερομηνία και ώρα) και όπως ξέρετε οι SSD είναι ταχύτατοι… το είπαμε αυτό σωστά ;

Η διανομή σας, είναι σίγουρο ότι έχει επιλέξει τις σωστές ρυθμίσεις αφού η σύγχρονη εκδοχή της ρύθμισης είναι το relatime και περιλαμβάνεται στην default ρύθμιση. Οπότε αν ανοίξετε το /etc/fstab του συστήματός σας και δείτε στα διαμερίσματα την λέξη defaults είστε μια χαρά δεν χρειάζεται να κάνετε τίποτα.

Ελεύθερος χώρος στον SSD

Ίσως να διαβάσατε κάπου, με μεγάλα γράμματα ότι θα πρέπει να έχετε πάντα ένα 20% ελεύθερο χώρο στον SSD για να μην φθαρεί και να μην μειωθούν οι επιδόσεις του. Κάποιοι το βάζουν στο 15% άλλοι στο 10% ενώ κάποιοι στο 8%…. dafuq !

Ας αποφασίσουν τελικά πόσο ελεύθερο χώρο θα πρέπει να διατηρούμε γιατί έχουμε μπερδευτεί….

Διότι όταν φτάνεις τον δίσκο να έχουν μείνει 8% ελεύθερος χώρος, τότε δεν έχει πρόβλημα ο SSD αλλά μάλλον εσύ που μαζεύεις σαβούρα…

Με άλλα λόγια, μην γεμίζετε τον δίσκο σας…. Όχι επειδή κάτι θα πάθει ο SSD σας… αλλά δεν είναι φυσιολογικό. Πάντα να συμβουλεύεστε τις οδηγίες του κατασκευαστή του SSD σας και όχι διάφορες συμβουλές που θα βρείτε.

Advertisements

Αδρανοποίηση συστήματος στο SSD

Τελευταίο αφήνω αυτό το μαργαριτάρι. Η αδρανοποίηση ήταν μια τεχνολογία της δεκαετίας του 2000 στο οποίο αποθηκεύαμε την κατάσταση του συστήματος στον δίσκο λίγο πριν κλείσει, οπότε όταν ανοίγαμε το PC αυτό επέστρεφε στην κατάσταση που ήταν πριν κλείσει, με όλα τα προγράμματα και τα αρχεία που ίσως έχουμε ανοίξει.

ruthmiseis-beltistopoihseis-ssd-linux9

Έτσι πολλές φορές θα δείτε να συμβουλεύουν, την μη χρήση του και απενεργοποίηση του διότι φθείρει. Δεν ξέρω αν υπάρχουν ακόμα διανομές που το έχουν ενεργό ούτε χρήστες που το χρησιμοποιούν.

Αλλά και να το χρησιμοποιούν, το μόνο που γίνεται είναι ότι όταν πατάμε Αδρανοποίηση αντί Τερματισμό του PC, τα δεδομένα της RAM γράφονται στον δίσκο σε ένα μεγάλο αρχείο.

Όπως και στην περίπτωση του Swap, ως χρήστες κατεβάζουμε μεγάλα αρχεία, το σύστημα κάνει συνεχείς μικρές εγγραφές στο παρασκήνιο οπότε το να ανησυχούμε για την αδρανοποίηση, στερείται λογικής.

Επίλογος

ruthmiseis-beltistopoihseis-ssd-linux10

Αυτό που θα ήθελα να κρατήσετε από όλο το παραπάνω σεντόνι είναι ότι οι μηχανικοί της διανομής που χρησιμοποιείτε αλλά πρωτίστως οι κατασκευαστές του SSD σας, έχουν μεριμνήσει για την μακροζωία του οπότε χαλαρώστε και απολαύστε την ταχύτητά του.


Για μελέτη: