Oct 20, 2011

Βελτίωση της απόδοσης μνήμης swap στο Linux

Αν και το laptop μου διαθέτει 8 GB RAM, o προγραμματισμός στα εργαλεία ανάπτυξης της Oracle παραμένει πολύ απαιτητικός από την άποψη πόρων. Ένα virtual machine που τρέχει το Oracle SOA/BPM Suite καταναλώνει 2 GB μνήμης. O JDeveloper 1G και άλλο ένα 1G ο embedded Weblogic. Firefox, SQL Developer, ANT build scripts ή η εκκίνηση άλλων VMs για διαφορετικά projects και δεν αργούμε να φθάσουμε κάποιες φορές στο swapping της μνήμης. Όταν μάλιστα συμβαίνει αυτό, το σύστημα επιβραδύνει δραματικά τη λειτουργία του, ο δίσκος (ακόμα και ο solid state) καθυστερεί με πολλές εγγραφές και αναγνώσεις ενώ μου έχει συμβεί να κάνει abrupt shutdown και κάποιο virtual machine του VirtualBox μέσα σε αυτήν την κατάσταση.

Ένας ανεκτίμητος βοηθός είναι το kernel module zram (http://compcache.googlecode.com/hg/README - πρώην compcache) που αναλαμβάνει να κάνει συμπίεση στην RAM των περιεχομένων του swap αυξάνοντας έτσι την απόκριση του συστήματος σε τέτοιες ειδικές συνθήκες. Το module έχει ενσωματωθεί στον πυρήνα από την έκδοση 2.6.37 rc 1 και μπόρεσα να το εκμεταλλευτώ στο Ubuntu Maverick Meerkat (10.10) από το PPA mainline kernel repository. Μπορούμε μάλιστα να ορίσουμε ποιο είναι το μέγεθος της συμπιεσμένης μνήμης που θα χρησιμοποιηθεί (o υπολογισμός στην περίπτωση μου έδινε αρχικά άλλα 8GB κατανεμημένα στους δυο επεξεργαστές του Core Duo 2 μου, ενώ αποφάσισα πως 1 GB είναι αρκετό) Εντυπώσεις; Όταν θα ξεκινήσει το swapping, θα προκύψει κάποια μικρή στιγμή παγώματος, αλλά αμέσως μετά το σύστημα θα συμπεριφερθεί δίχως καθυστερήσεις, λειτουργώντας απρόσκοπτα, χωρίς να γίνεται αντιληπτό πως γίνεται υπέρβαση μνήμης. Πραγματικά αξίζει τον κόπο!

No comments: