Ειλικρινά είμαι έκπληκτος. Πιο πάνω γράψατε τον έναν λόγο για τον οποίο κάποιος θα έκανε κάτι τέτοιο όπως ο καθαρισμός της προσωρινής μνήμης στο Linux: δοκιμές - ειδικά συγκριτική αξιολόγηση. Στη συνέχεια, προχωράτε και εξηγείτε πώς να δημιουργήσετε μια δουλειά cron που καθαρίζει την προσωρινή μνήμη κάθε βράδυ.
τι νόημα έχει αυτό; Κάθε αρχάριος που διαβάζει αυτό θα πιστεύει ότι ο καθαρισμός της προσωρινής μνήμης (ή ακόμη και η επανασύνδεση του διαμερίσματος ανταλλαγής) είναι καλό για σκοπούς διαχείρισης, όπως θα κάνατε όταν καθαρίζετε την προσωρινή μνήμη του δίσκου για τον Internet Explorer σε Windows μηχανή.
Δεν είναι. Η εξήγηση γιατί δεν είναι υπάρχει στο άρθρο σας, αλλά ο τρόπος με τον οποίο αναφέρεται ενσωματωμένη στις οδηγίες για το πώς να το κάνετε ούτως ή άλλως φαίνεται παραπλανητικός για τους αρχάριους, οπότε επιτρέψτε μου να σας εξηγήσω.
Ναι, υπάρχουν κάποιες εφαρμογές γύρω από αυτήν τη μνήμη γουρουνιού τόσο άσχημα που η μνήμη του συστήματος μπορεί να καταστραφεί και το σύστημα αρχίζει να μετακινεί σελίδες μνήμης στο διαμέρισμα ανταλλαγής. Ο Firefox έρχεται στο μυαλό καθώς μπορεί να γίνει πρόβλημα όταν λειτουργεί μόνο με 2 GB μνήμης συστήματος.
Ακόμα κι αν κλείσετε καρτέλες ιστοσελίδων που είναι ιδιαίτερα πεινασμένες στη μνήμη (το ebay είναι πολύ κακός παραβάτης εδώ) δεν θα κυκλοφορήσει όλος ο κώδικας στη μνήμη όπως θα έπρεπε. Λάβετε υπόψη εδώ ότι αυτό είναι πρόβλημα της εφαρμογής και όχι του Linux όμως. Αυτό σημαίνει ότι δεν θα πάρετε πίσω αυτήν τη μνήμη παίζοντας με το λειτουργικό σύστημα, όπως και να ρίξετε την προσωρινή μνήμη ούτως ή άλλως. Η απαιτούμενη παρέμβαση θα ήταν να κάνουμε κάτι για τον Firefox.
Ο μόνος τρόπος που γνωρίζω για να πάρω πίσω τη μνήμη είναι να τερματίσω την προσβλητική διαδικασία, δηλαδή τον Firefox. Μια αξιοσημείωτη εξαίρεση σε αυτό είναι οι βάσεις δεδομένων που μπορεί να μοιάζουν να τροφοδοτούν τη μνήμη εάν δεν έχουν διαμορφωθεί σωστά (σε αντίθεση με την κακή διαχείριση μνήμης στο εφαρμογή) αλλά ακόμη και τότε θα πρέπει πρώτα να δείτε τη βάση δεδομένων σας (έχοντας κατά νου ότι ο «Διαχειριστής βάσης δεδομένων» είναι μια περιγραφή εργασίας για έναν λόγος. Ό, τι κι αν κάνετε, η εκκαθάριση της προσωρινής μνήμης δεν θα βοηθήσει).
Οπότε ναι, αυτό που λέω είναι ότι η πρόθεση στη δεύτερη πρόταση αυτού του άρθρου είναι ψευδής. Εάν έχετε μια διαδικασία που τρώει τη μνήμη σας, ο καθαρισμός της προσωρινής μνήμης δεν θα την αγγίξει καν, ενώ η διαδικασία εκτελείται.
Ο τερματισμός της διαδικασίας θα απελευθερώσει τη μνήμη. Μερικές φορές μπορείτε ακόμη και να παρατηρήσετε πώς ο πυρήνας αποφασίζει να απορρίψει το μεγαλύτερο μέρος της μνήμης που αξιώνεται από μια τέτοια τερματισμένη διαδικασία, δηλαδή δεν την κρατά καν στην προσωρινή μνήμη.
Εάν η διαδικασία απαιτούσε αρκετή μνήμη, μπορεί να έχει μετατοπίσει πολύ βασικό κώδικα από τη μνήμη σε ο χώρος ανταλλαγής προκαλώντας τον υπολογιστή να λειτουργεί πιο αργά για λίγο ακόμα μέχρι να τελειώσει αυτός ο κωδικός μνήμης ανακτήθηκε Τώρα, αν βρίσκεστε στην επιφάνεια εργασίας σας στο σπίτι, μπορεί να θέλετε να ακολουθήσετε τις παραπάνω οδηγίες και να πείτε «ανταλλαγή -a && swapon -a«Και πάρε ένα φλιτζάνι τσάι και όταν επιστρέψεις ο υπολογιστής σου θα είναι πάλι γρήγορος.
Αν δεν σας αρέσει το τσάι, μπορείτε απλώς να συνεχίσετε αυτό που κάνατε χωρίς να επανασυνδέσετε το swap σας, καθώς πιθανότατα δεν θα χρειαστεί πολύς χρόνος για να μεταναστεύσει η μνήμη ούτως ή άλλως. Η μη επανασύνδεση του swap θα έχει το πλεονέκτημα ότι μόνο ο κωδικός που πραγματικά χρειάζεται θα τοποθετηθεί ξανά στη μνήμη (η προτιμώμενη επιλογή μου). Έτσι: η επανασύνδεση του swap θα καταναλώσει περισσότερους πόρους συστήματος συνολικά από το να αφήσει τον πυρήνα να το αντιμετωπίσει.
Μην επανασυνδέσετε την ανταλλαγή σε ζωντανό σύστημα παραγωγής, εκτός αν νομίζετε ότι γνωρίζετε πραγματικά τι κάνετε. Αλλά τότε δεν θα έπρεπε να το πω αυτό, όπως θα το μάθετε ούτως ή άλλως ενώ κάνετε την έρευνα / δοκιμή σας όπως πρέπει όταν κάνετε τέτοιου είδους πράγματα σε ένα ζωντανό σύστημα παραγωγής.
Εδώ είναι μια άλλη σκέψη. Maybeσως η πλάνη αποθήκευσης cache προέρχεται από τον τρόπο με τον οποίο η χρήση της μνήμης παραδοσιακά λογίζεται σε συστήματα Linux. Παράδειγμα αν ανοίξετε το 'μπλουζα"Σε ένα τερματικό και κοιτάξτε τη σειρά όπου γράφει"Mem«, Υπάρχουν καταχωρήσεις»Ελεύθερος' και 'μεταχειρισμένος‘Μνήμη.
Τώρα τα στατιστικά στοιχεία για τη χρησιμοποιημένη μνήμη περιλαμβάνουν πάντα τη μνήμη που χρησιμοποιείται για προσωρινή αποθήκευση και αποθήκευση. Η ελεύθερη μνήμη είναι η μνήμη που δεν χρησιμοποιείται καθόλου. Έτσι, εάν θέλετε να μάθετε τη μνήμη που χρησιμοποιείται για λειτουργίες και εφαρμογές αφαιρέστε τιμές buffer και cache από τη χρησιμοποιημένη μνήμη και θα έχετε το αποτύπωμα όλης της υπολειπόμενης μνήμης που χρησιμοποιείται για εφαρμογές.
Εάν δεν το γνωρίζετε και κοιτάζετε μόνο την ποσότητα της ελεύθερης μνήμης που ίσως πιστεύατε ότι ήσασταν πραγματικά εξαντλείται η φυσική μνήμη, αλλά εφόσον υπάρχει αρκετή μνήμη που χρησιμοποιείται από την προσωρινή μνήμη, αυτό δεν είναι αληθής. Εάν αφήσετε την προσωρινή μνήμη όπως περιγράφεται παραπάνω, η κορυφή θα αναφέρει όλη αυτή τη μνήμη ως δωρεάν μνήμη, αλλά αυτό είναι πραγματικά όχι αυτό που νομίζατε ότι θέλετε - εκτός και αν δοκιμάζετε ή συγκρίνετε δείκτες αναφοράς (δείτε την ανάρτηση του Ole Tanges εδώ παράδειγμα).
Τώρα, η πολιτική του πυρήνα του Linux είναι να χρησιμοποιεί όση περισσότερη μνήμη μπορεί για κάτι χρήσιμο. Η πρώτη προτεραιότητα προφανώς πηγαίνει στον κώδικα os / εφαρμογής. Όλα τα υπόλοιπα χρησιμοποιούνται για buffer/cache (περισσότερα για αυτό εδώ: http://stackoverflow.com/questions/6345020/linux-memory-buffer-vs-cache).
Γράφτηκε παραπάνω στο άρθρο, αλλά θα το πω ξανά εδώ: τα δεδομένα στην προσωρινή μνήμη είναι αντίγραφα αρχείων που είναι αποθηκευμένα στην κύρια μονάδα δίσκου σας. Διατηρείται εκεί σε περίπτωση που χρειαστεί ξανά, οπότε είναι πολύ πιο γρήγορα από το να χρειαστεί να το διαβάσετε ξανά από τη μονάδα δίσκου.
Αυτό είναι καλό και θέλετε να το διατηρήσετε έτσι σε κάθε είδους εγκατάσταση Linux. Εκτός αν κάνετε δοκιμές (σε περιβάλλον δοκιμής). Or απλά παίζοντας και μαθαίνοντας κάτι νέο, και γι 'αυτό το άρθρο σας είναι λαμπρό!
ΥΣΤΕΡΟΓΡΑΦΟ.: Παρατήρησα μερικούς ανθρώπους εδώ που προσπαθούν να ξεπλύνουν την προσωρινή μνήμη ενώ προφανώς αντιμετωπίζουν προβλήματα με περιορισμένη μνήμη. Όπως είπα και πριν, αυτό είναι κάτι που πρέπει να εξετάσουμε σε επίπεδο εφαρμογής και όχι σε επίπεδο os.
Ένα καλό πρώτο βήμα για να μάθετε τι προκαλεί το εμπόδιο μνήμης είναι να χρησιμοποιήσετε "μπλουζα‘. Εισαγάγετε αυτό στη γραμμή εντολών και πατήστε Shift+m (ή Μ αν σου αρέσει). Αυτό θα ταξινομήσει τη λίστα των διαδικασιών που εκτελούνται στο σύστημά σας βάσει του υπολειπόμενου αποτυπώματος μνήμης τους. Η στήλη που πρέπει να δείτε είναι «ΑΠΕ«Για την υπολειπόμενη μνήμη (αυτή είναι η μνήμη που πράγματι κατανέμεται εντός του εικονικού χώρου μνήμης).
Σύντομα θα δείτε ποια διαδικασία προκαλεί τα περισσότερα προβλήματα. Δεν υπάρχει μία απάντηση στο τι πρέπει να κάνουμε στη συνέχεια. Μια διαδικασία όπως ο Firefox ενδέχεται να επανεκκινηθεί. Εάν το πρόβλημα μνήμης προκαλείται από εικονικές μηχανές, η μνήμη κεντρικού υπολογιστή είναι πιθανότατα υπερβολική, δηλαδή η συνδυασμένη κατανομή η μνήμη όλων των vms υπερβαίνει τη συνολική ποσότητα φυσικής μνήμης στον κεντρικό υπολογιστή ή τουλάχιστον δεν της αφήνει χώρο για εκτέλεση εαυτό.
Εάν αυτό είναι ένα πραγματικό πρόβλημα στο κουτί σας, μπορείτε να προσπαθήσετε να μειώσετε τη μνήμη που κατανέμεται για κάθε vm. Εάν αυτό δεν είναι μια επιλογή, ο φθηνότερος και ευκολότερος τρόπος επίλυσης αυτού του προβλήματος είναι συνήθως να κολλήσετε περισσότερη μνήμη στο πλαίσιο (εάν εκτελείτε KVM, μια καλή αρχή είναι να διαβάσετε αυτό: http://www.linux-kvm.org/page/Memory).
Μπορεί η εφαρμογή που εκτελείτε να έχει σφάλμα στη διαχείριση μνήμης (δοκιμάστε να αυξήσετε ή να υποβαθμίσετε, σκεφτείτε να υποβάλετε μια αναφορά σφάλματος). Θα μπορούσε να είναι ότι η εφαρμογή απαιτεί απλώς περισσότερη μνήμη από αυτήν που έχετε εγκαταστήσει (επεξεργασία εικόνας/βίντεο εφαρμογές έρχονται στο μυαλό, όπου η ποσότητα της απαιτούμενης μνήμης εξαρτάται από το μέγεθος των αρχείων που εργάζεστε επί).
Και πάλι, εάν αυτό είναι ένα συνεχές ζήτημα, δεν θα ξεπεράσετε την αναβάθμιση της μνήμης σας. Βάσεις δεδομένων βάσης επιχειρήσεων Oracle κ.λπ. είναι πιο δύσκολο να συμβουλευτώ εδώ. Καθώς μπορούν να κάνουν τη δική τους διαχείριση της προσωρινής μνήμης, δεν θα δείτε απαραίτητα τι συμβαίνει στην κορυφή και απλά ρίχνοντας «περισσότερο κασσίτερο», δηλαδή η απλή εγκατάσταση περισσότερης μνήμης μπορεί να κάνει πολύ λίγα διαφορά.
Διαβάστε μια εισαγωγή σχετικά με τη δημιουργία προφίλ για το συγκεκριμένο db που εκτελείτε, εάν δεν το έχετε ήδη: ρυθμίστε μια δοκιμαστική μηχανή (με υλικό όσο το δυνατόν πιο παρόμοιο με το παραγωγή ενός), αντιγράψτε τη διαμόρφωση και το σύνολο δεδομένων από το κιβώτιο παραγωγής σας και δημιουργήστε σενάρια δοκιμής που ελπίζουμε να αναπαράγουν μερικές από τις περιπτώσεις αιχμής χρήσης και να τα λάβετε από εκεί. Οι κατανεμημένες εφαρμογές όπως το apache, το λογισμικό λογιστικής επιχειρησιακής ποιότητας, το ονομάζετε έχουν τις δικές τους συγκεκριμένες απαιτήσεις.
Ό, τι άλλο κάνετε, δείτε την τεκμηρίωση της εφαρμογής.
Μόλις καταλάβετε τι συμβαίνει, υπάρχουν μερικά (προχωρημένα) πράγματα που μπορούν να γίνουν σε επίπεδο os. Ένα παράδειγμα είναι η δημιουργία ομάδων για τον έλεγχο του «ευελιξία«Ορισμένων συνόλων εφαρμογών (διαβάστε http://unix.stackexchange.com/questions/10214/how-to-set-per-process-swapiness-for-linux/10227#10227).
Εάν σκέφτεστε να το ρυθμίσετε σε ένα σύστημα παραγωγής, θέλετε να το ρυθμίσετε πρώτα σε ένα περιβάλλον δοκιμής και βεβαιωθείτε ότι κάνει αυτό που θέλετε να κάνει. Σε έχω προειδοποιήσει.
ΑπάντησηΗ εκκαθάριση της προσωρινής μνήμης είναι σίγουρα άχρηστη ..
Η προσωρινή μνήμη που βλέπετε υπάρχει μόνο περιεχόμενο άμεσης μνήμης αρχείων δίσκου (ext2-3-4 βασική ενίσχυση ταχύτητας προσπελάσεων). Ο στόχος είναι να βελτιωθεί η πρόσβαση σε κοινά χρησιμοποιημένα αρχεία ΟΤΑΝ είναι διαθέσιμη μνήμη (η RAM δεν χρησιμοποιείται).
Έτσι, το Linux απελευθερώνει αυτόματα αυτήν την "προσωρινή μνήμη" όταν μια διαδικασία χρειάζεται μνήμη, αυτό που κάνετε με την "επαναφορά" του περιεχομένου της προσωρινής μνήμης είναι να αφαιρέσετε αυτά τα περιεχόμενα αρχείων μέσα στο έμβολο και να ζητήσετε από το σύστημά σας αντ 'αυτού να χρησιμοποιήσετε το περιεχόμενο του δίσκου (γνωρίζετε ότι οι προσβάσεις στο δίσκο είναι πιο αργές και στη συνέχεια οι επιδόσεις της εφαρμογής σας θα είναι λιγότερο αποτελεσματικές, το Linux EXT FS το κάνει για επιδόσεις )
Στη συνέχεια, για μένα αυτό είναι άχρηστο (διαχειρίζεται αυτόματα το λειτουργικό σύστημα) και μπορεί ακόμη και να οδηγήσει σε προβλήματα απόδοσης σε εφαρμογές υψηλού φορτίου…
ΑπάντησηΠότε θα χρησιμοποιήσετε αυτό:
Κατά τη μέτρηση της απόδοσης μπορεί να είναι σημαντικό να το κάνουμε με αναπαραγώγιμο τρόπο. Οι κρυφές μνήμες μπορεί συχνά να μπερδέψουν αυτά τα αποτελέσματα.
Έτσι, μια από τις καταστάσεις όπου θα αφήσετε όλες τις κρυφές μνήμες, είναι αν έχετε περισσότερους τρόπους για να κάνετε το ίδιο πράγμα και προσπαθείτε να καταλάβετε ποιος είναι ο πιο γρήγορος τρόπος:
ηχώ 3 | sudo tee/proc/sys/vm/drop_caches. χρόνος do_the_thing έκδοση1. ηχώ 3 | sudo tee/proc/sys/vm/drop_caches. χρόνος do_the_thing έκδοση2.Απάντηση