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

Τι είναι η ανταλλαγή;

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

Ο χώρος ανταλλαγής είναι πραγματικά απαραίτητος;

Είναι τεχνικά απαραίτητος χώρος ανταλλαγής; Όχι. Το Linux μπορεί να λειτουργήσει χωρίς αυτό και σε μερικές περιπτώσεις, όπως οι ενσωματωμένες λύσεις, το Linux μπορεί να λειτουργήσει χωρίς εναλλαγή. Αν το OS φτάσει σε μια κατάσταση όπου δεν έχει αρκετή μνήμη, θα πανικοβληθεί και θα σταματήσει. Εάν υπάρχει αρκετή φυσική μνήμη RAM, το μηχάνημα θα λειτουργεί χωρίς προβλήματα.

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

Στις μηχανές που δεν έχουν αρκετή φυσική μνήμη RAM για να διαμένουν τα πάντα στη μνήμη, τότε η χρήση χώρου ανταλλαγής είναι απαραίτητη!

Για λόγους πληρότητας, αξίζει να σημειωθεί ότι το Linux διαθέτει επίσης ένα υποσύστημα που ονομάζεται Killer Out-Of-Memory (OOM), το οποίο αντί να σταματήσει τον πυρήνα όταν χάσει τη μνήμη του, θα αρχίσει να σκοτώνει τις διαδικασίες για να ελευθερώσει τους πόρους. Οι ενέργειές του είναι διαμορφώσιμες.

Πόσος χώρος ανταλλαγής πρέπει να διαθέσω;

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

Προσθήκη swap χωρίς επέκταση του διαμερίσματος swap

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

Για να χρησιμοποιήσετε έναν άλλο σκληρό δίσκο, δημιουργήστε ένα διαμέρισμα τύπου "Linux swap" (κωδικός 82) και στη συνέχεια εκτελέστε την εντολή " mkswap " για να προετοιμάσετε το χώρο swap:

 mkswap / dev / sdb2 

Όπου /dev/sdb2 είναι το όνομα του διαμερίσματος που δημιουργήσατε. Για να χρησιμοποιήσετε το χώρο ανταλλαγής χρησιμοποιήστε αμέσως την εντολή " swapon ":

 swapon / dev / sdb2 

Χρησιμοποιήστε το " swapon -s " για να λάβετε μια λίστα με τους τρέχοντες χώρους swap. Για να προσθέσετε μόνιμα το χώρο ανταλλαγής στο σύστημα, θα χρειαστεί να επεξεργαστείτε το αρχείο /etc/fstab και να προσθέσετε μια γραμμή παρόμοια με αυτή:

 / dev / sdb2 κανένα swap sw 0 0 

Εάν το σύστημά σας χρησιμοποιεί μοναδικά αναγνωριστικά για να ονομάσετε τους δίσκους, χρησιμοποιήστε την εντολή blkid για να λάβετε μια λίστα αναγνωριστικών για τις συσκευές. Η γραμμή για την τοποθέτηση του χώρου εναλλαγής στο /etc/fstab θα έμοιαζε κάπως έτσι:

 UUID = 036da155-1ea1-4392-b8d4-700f65aa1ead κανένα swap sw 0 0 

Για να χρησιμοποιήσετε ένα αρχείο για εναλλαγή, δημιουργήστε ένα μεγάλο κενό αρχείο (χρησιμοποιώντας dd ) στο σύστημα αρχείων που θέλετε να χρησιμοποιήσετε για εναλλαγή. Για παράδειγμα, για να δημιουργήσετε ένα αρχείο 1GB, πληκτρολογήστε:

 dd if = / dev / μηδέν = = αποθήκευση / swapfile bs = 1024 count = 1048576 

Πού /store/swapfile είναι η διαδρομή προς το αρχείο ανταλλαγής στο επιθυμητό σύστημα αρχείων.

Όπως και με το πρόσθετο διαμέρισμα swap, το αρχείο πρέπει τώρα να προετοιμαστεί με το mkswap και στη συνέχεια να χρησιμοποιηθεί με το swapon . Πρέπει επίσης να προστεθεί στο αρχείο /etc/fstab . Η διαδικασία είναι ακριβώς η ίδια με την παραπάνω, αλλά πρέπει να χρησιμοποιήσετε /store/swapfile αντί για /dev/sdb2 ως παράμετρο χώρου ανταλλαγής.

Swappiness

Ο πυρήνας του Linux μπορεί να τροποποιηθεί για να καθορίσει πώς επιθετικά θα πρέπει να προσπαθήσει να αλλάξει τις διαδικασίες εκτός μνήμης. Αυτή η τάση ελέγχεται από μια μεταβλητή πυρήνα που ονομάζεται swappiness . Μια swappiness 0 σημαίνει ότι ο πυρήνας θα αποφύγει την εναλλαγή όσο το δυνατόν περισσότερο, ενώ ο 100 σημαίνει ότι ο πυρήνας θα είναι επιθετικός στον τρόπο με τον οποίο χρησιμοποιεί το χώρο ανταλλαγής. Η προεπιλεγμένη ρύθμιση για πολλές διανομές Linux είναι 60. Μπορείτε να αλλάξετε δυναμικά τον αριθμό χρησιμοποιώντας αυτήν την εντολή:

 sudo sysctl vm.swappiness = 10 

Για να ορίσετε μόνιμα μια τιμή, πρέπει να αλλάξετε (ή να προσθέσετε, αν δεν υπάρχει) τη μεταβλητή vm.swappiness στο /etc/sysctl.conf .

Ενημερώστε μας αν έχετε ερωτήσεις σχετικά με την ανταλλαγή στο Linux.