Swapping: Let's swap...
Description: This is issue 22 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #22
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Περιεχόμενα ### 1. Let's swap... ### 1.1 Σκοπός ύπαρξης swap κατάτμησης/αρχείου To swap αρχείο/κατάτμηση χρησιμοποιείται ως εικονική μνήμη (virtual RAM) στο σύστημά σας. Η εικονική μνήμη είναι επέκταση της πραγματικής μνήμης του συστήματος. Η ύπαρξή του τις περισσότερες φορές είναι απαραίτητη. ### 1.2 Εικονική μνήμη Το Linux υποστηρίζει εικονική μνήμη, δήλαδη χρησιμοποιεί ένα δίσκο σαν επέκταση της RAM, έτσι ώστε το συνολικό μέγεθος της χρησιμοποιήσιμης μνήμης να αυξάνει αναλογικά. Ο πυρήνας γράφει τα περιεχόμενα ενός τρέχοντος αχρησιμοποίητου block μνήμης στο σκληρό δίσκο έτσι ώστε η μνήμη να μπορεί να χρησιμοποιηθεί για άλλο σκοπό. Όταν τα αρχικά περιέχομενα χρειάζονται ξανά, διαβάζονται πάλι από τη μνήμη. Αυτά όλα γίνονται τελείως αδιαφανή από το χρήστη. Προγράμματα που τρέχουν κάτω από το Linux βλέπουν μόνο τη μεγαλύτερη ποσότητα της διαθέσιμης μνήμης και δεν προσέχουν πως κομμάτια αυτών μένουν στο δίσκο από στιγμή σε στιγμή. Το κομμάτι του σκληρού δίσκου που χρησιμοποιείται σαν εικονική μνήμη ονομάζεται χώρος swap (χώρος προσωρινής αποθήκευσης). ### 1.3 Λειτουργία Όταν χρησιμοποιείται swap χώρος, το Linux μετακινεί αχρησιμοποιήτες σελίδες μνήμης στο σκληρό δισκό, επιτρέποντας να τρέχετε περισσότερες εφαρμογές ταυτόχρονα στο σύστημά σας. Όμως, επειδή αυτή η διαδικασία είναι σχετικά αργή (χίλιες φορές περίπου), ο χώρος swap δεν μπορεί να αντικαταστήσει την πραγματική φυσική μνήμη RAM, που είναι πιο γρήγορη. Έτσι τα προγράμματα δεν τρέχουν το ίδιο γρήγορα. Οι εφαρμογές του X Window System, κυρίως, έχουν ιδιαίτερες απαιτήσεις σε μνήμη και γι'αυτό θα πρέπει να έχετε μια συσκευή (αρχείο/κατάτμηση) swap. Μερικά προγράμματα καταλαμβάνουν στατικά σελίδες πραγματικής μνήμης (κλειδώνοντάς τες) για λόγους ασφαλείας ή για λόγους απόδοσης. Με αυτόν τον τρόπο οι "κλειδωμένες" σελίδες μειώνουν το μέγεθος της διαθέσιμης πραγματικής μνήμης, καθιστώντας απαραίτητη τη χρήση swap μνήμης. ### 1.4 Swapping/Paging Με απλά λόγια: Υπάρχει διαχωρισμός μεταξύ του swapping (γράφοντας ολόκληρες τις διεργασίες (processes) σε χώρο swap) και του paging (γράφοντας μόνο καθορισμένου μεγέθους κομμάτια, συνήθως μερικά kilobytes τη φορά). Το paging είναι συνήθως πιο αποτελεσματικό, και αυτό είναι που κάνει το Linux, αλλά μιλάμε για swapping έτσι κι αλλιώς. ### 1.5 Μέγεθος swap Ορισμένοι προτείνουν ότι η swap μνήμη πρέπει να έχει διπλάσιο μέγεθος από αυτό της πραγματικής μνήμης. Υπάρχουν αρκετές διαφοροποιήσεις σχετικά με το πόση swap μνήμη θα πρέπει να χρησιμοποιήσετε: όλες εξαρτώνται από το τι εφαρμογές θέλετε να τρέχετε... Το μέγεθος του χώρου swap εξαρτάται ακόμη από πόση μνήμη έχετε ήδη στο σύστημά σας. Αν έχετε αρκετή φυσική μνήμη (>128ΜΒ) και είστε ο μοναδικός χρήστης του συστήματος χωρίς ιδιαίτερες απαιτήσεις μπορεί να σκεφτείτε να μην χρησιμοποιήσετε μνήμη swap, έχοντας έτσι περισσότερο ελεύθερο αποθηκευτικό χώρο και μειώνοντας το χρόνο αναζήτησης στα δεδομένα σας. Μπορεί να μην χρησιμοποιείτε μια swap κατάτμηση πολύ συχνά, όταν όμως τη χρειαστείτε η παρουσία της είναι ανεκτίμητη. Πιθανότατα δεν έχει νόημα να έχετε swap μνήμη περισσότερη από τρεις φορές της φυσικής μνήμης. Υπολογίστε τη συνολικη σας ανάγκη σε μνήμη. Αυτή είναι το μεγαλύτερο μέγεθος μνήμης που πιθανώς θα χρειαστείτε σε κάθε στιγμή, δηλαδή το άθροισμα των απαιτήσεων σε μνήμη όλων των προγραμμάτων που θέλετε να τρέχετε ταυτοχρόνως. Αυτό μπορεί να γίνει τρέχοντας την ίδια ώρα όλα τα προγράμματα που πιθανώς θα τρέξετε ποτέ ταυτοχρόνως. Για παράδειγμα, αν θέλετε να τρέχετε το X Window System, θα πρέπει να καταχωρίσετε περίπου 8-16 MB για αυτό, ο gcc θέλει αρκετά megabytes (μερικά αρχεία χρειάζονται μία ασυνήθιστα μεγάλη ποσότητα, μέχρι και δεκάδες megabytes, αλλά συνήθως περίπου 4-8 θα είναι αρκετά) κτλ. Ο πυρήνας θα χρησιμοποιήσει περίπου 1-2ΜΒ από μόνος του, και τα συνηθισμένα shells και άλλα μικρά βοηθητικά προγράμματα ίσως μερικές εκατοντάδες kilobytes (περίπου 1ΜΒ όλα μαζί). Δεν υπάρχει ανάγκη να προσπάθησετε να είστε ακριβείς, υπολογισμοί στο περίπου είναι μια χαρά, αλλά μπορεί να θέλετε να είστε στην απαισιόδοξη πλευρά. Θυμηθείτε πως αν υπάρχουν αρκετά άτομα που χρησιμοποιούν το σύστημα ταυτοχρόνως, θα καταναλώνουν όλα μνήμη. Πάντως, αν δύο άτομα τρέχουν το ίδιο πρόγραμμα αταυτοχρόνως, η συνολική κατανάλωση μνήμης συνήθως δεν είναι διπλάσια, εφόσον οι σελίδες του κώδικα και οι shared βιβλιοθήκες υπάρχουν ήδη μια φορά. ### 1.6 Όρια Το μέγιστο χρήσιμο μέγεθος μιας περιοχής swap εξαρτάται πλέον από την αρχιτεκτονική του συστήματος. Είναι περίπου: 2GB σε i386, PPC, m68k, ARM, 1GB σε sparc, 512MB σε mips, 128GB σε alpha και 3TB σε sparc64. Υποστηρίζονται μέχρι και 8 συνολικά περιοχές swap. ### 1.7 Συμβουλές για μέγιστη απόδοση Συνιστάται η χρησιμοποιήση μιας swap κατάτμησης παρά ενός swap αρχείου. Έτσι σε πολλές εγκαταστάσεις του Linux θα συναντήσετε δύο τουλάχιστον κατατμήσεις. To swapping σε αρχείο επιφέρει σχετική μείωση της απόδοσης του συστήματος γιατί πηγαίνει μέσω του συστήματος αρχείων (ext2). Από την άλλη, μπορείτε να προσθέσετε swap αρχείο όποτε θέλετε χωρίς καμία ανάγκη για κατάτμηση των δίσκων σας. Χρησιμοποποιείστε πρώτα αρχείο swap, δουλέψτε με το σύστημα σας για λίγο καιρό για να δείτε πόση μνήμη swap χρειάζεστε περίπου, και μετά φτιάξτε μια κατάτμηση swap. Μπορείτε βέβαια να χρησιμοποιείτε πολλές swap κατατμήσεις ή/και swap αρχεία, ταυτοχρόνως. Αφήστε, πάντως, περιθώρια ασφαλείας γιατί πιθανότατα θα ξεχάσετε να τρέξετε μερικά προγράμματα που θα θέλετε να τρέχετε και βεβαιωθείτε ότι έχετε ελέυθερο χώρο σε κάθε περίπτωση. Είναι καλύτερα να καταχωρήσετε πάρα πολύ χώρο παρά πολύ λίγο (προσέξτε τους τόνους στο παρα...), αλλά δεν υπάρχει ανάγκη να το παρακάνετε και να καταχωρήσετε ολόκληρο δίσκο, εφόσον αχρησιμοποιήτος χώρος swap είναι no doubt wasted χώρος. Αν ο χώρος swap, που θα υπολογίσετε με την παραπάνω μέθοδο, είναι πάρα πολύ μεγαλύτερος από τη φυσική σας μνήμη (όχι τη δικιά σας, του συστήματος σας...), καλύτερα να σκεφτείτε σοβαρά να επενδύσετε στην αγορά περισσότερης φυσικής μνήμης, αλλιώς η απόδοση θα είναι αρκετά χαμηλή. Είναι καλή ιδέα να έχετε τουλάχιστον λίγο χώρο swap, ακόμη και αν οι υπολογισμοί σας δείχουν ότι δεν χρειάζεστε καθόλου. Το Linux χρησιμοποιεί το χώρο swap δυαναμικά, έτσι ώστε όση περισσότερη φυσική μνήμη το δυνατόν να μπορεί να παραμείνει ελεύθερη. Το Linux θα swap out σελίδες μνήμης που δεν έχουν χρησιμοποιηθεί, ακόμη και αν η μνήμη δεν χρειάζεται ακόμη για τίποτα. Αυτό αποφεύγει την αναμονή για swapping όταν χρειάζεται: το swapping μπορεί να γίνει νωρίτερα, όταν ο δίσκος είναι έτσι κι αλλιώς αδρανής. Ο χώρος swap μπορεί να χωριστεί ανάμεσα σε αρκετούς δίσκους. Αυτό μερικές φορές βελτιώνει την απόδοση, ανάλογα με τις σχετικές ταχύτητες των δίσκων και το χρόνο προσπέλασης αυτών. Μπορεί να θέλετε να πειραματιστείτε με μερικά διαδεδομένα μοντέλα, αλλά κατανοήστε ότι κάνοντας τα πειράματα κανονικά είναι αρκετά δύσκολο. Δε θα πρέπει να πιστεύετε φήμες που λένε ότι ένα μοντέλο είναι ανώτερο από κάθε άλλο, εφόσον δε θα είναι πάντα αληθείς. Μπορείτε να χρησιμoποιήσετε και περισσότερες από μία swap κατατμήσεις. Μερικοί χρησιμοποιούν RAM disks για swapping, δεν κερδίζετε πολλά με αυτόν τον τρόπο αφού μειώνεται τη διαθέσιμη μνήμη για caching και buffering. Συνιστάται να δημιουργείτε κατατμήσεις swap σε μεσαία tracks του σκληρού δίσκου (συνήθως /dev/?d?x, όπου xε{4,5,...} ανάλογα με τον αριθμό των υπάρχοντων κατατμήσεων) , γιατί τότε η αναζήτηση είναι σχετικά γρήγορη (γρήγορη διαμεταγωγή και αναζήτηση αρχείων). Αν χρησιμοποιείτε swap αρχείο συνιστάται να τοποθετείται σε ξεχωριστή κατάτμηση, αφού περιλαμβάνει λιγότερα ρίσκα. Αυτή η κατάτμηση δε θα μπορεί πλεόν να χρησιμοποιηθεί, ακόμη και αν φαίνεται να υπάρχει ελεύθερος χώρος σε αυτή. Επόμενο Περιεχόμενα