Προτείνουν έναν νέο ελεγκτή μνήμης για τον πυρήνα Linux

Linux Kernel

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

διαχειριστής μνήμης είναι ιδιαίτερα υπεύθυνος για την αποτελεσματική κατανομή της μνήμης στις διεργασίες, που σημαίνει ότι πρέπει να είναι σε θέση να απαριθμήσει ελεύθερες θέσεις διαθέσιμης μνήμης, να εκχωρήσει μνήμη που απαιτείται για νέες διεργασίες και να ανακτήσει τη μνήμη από τις διεργασίες τερματισμού. Ο διεκπεραιωτής εντός του πυρήνα του Linux είναι ο αποστολέας SLAB.

ΠΛΑΚΑ βασίζεται σε ένα σύστημα μπλοκ και κρυφής μνήμης που βελτιστοποιεί τα αιτήματα μνήμης. Αυτός ο τύπος διαχείρισης μνήμης μειώνει τον κατακερματισμό που προκαλείται από λειτουργίες εκχώρησης και μετεγκατάστασης.

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

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

Σκοπεύουν να αντικαταστήσουν το SLAB

Roman Gushchin, μέλος της ομάδας μηχανικής πυρήνα Linux στο Facebook, ανακάλυψε αυτό που θεωρεί ως "σοβαρό ελάττωμα" στον τρέχοντα πρόγραμμα οδήγησης/διαχειριστή μνήμης. και rπρότεινε πρόσφατα έναν νέο ελεγκτή μνήμης ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ που υπόσχεται να βελτιώσει δραστικά τη χρήση της μνήμης μεταξύ πολλαπλών cgroups (ή ομάδες ελέγχου) από τη μνήμη.

Λαμβάνοντας υπόψη αυτό, είναι σημαντικό να έχουμε κατά νου ότι το cgroups αναφέρεται σε μια δυνατότητα πυρήνα Linux που επιτρέπει τον περιορισμό, την καταμέτρηση και την απομόνωση της χρήσης πόρων συστήματος (επεξεργαστής, μνήμη, χρήση δίσκου, κ.λπ.) και ο όρος "σελίδα πλάκας" θα μπορούσε να εξομοιωθεί με τη διαδικασία εκχώρησης μνήμης από το SLAB.

Σύμφωνα με τον Gushchin:

«Ο πραγματικός λόγος για τον οποίο η υπάρχουσα σχεδίαση οδηγεί σε χαμηλή χρήση SLAB είναι απλός: Οι σελίδες πλακών χρησιμοποιούνται αποκλειστικά από ένα μόνο απόθεμα μνήμης.

Εάν υπάρχουν μόνο λίγες εκχωρήσεις συγκεκριμένου μεγέθους από μια cgroup, ή εάν απομένουν κάποια ενεργά αντικείμενα μετά την κατάργηση της cgroup, ή εάν η cgroup περιέχει μια εφαρμογή ενός νήματος που δεν εκχωρεί ουσιαστικά κανένα πυρήνα, αλλά το κάνει κάθε φορά σε μια νέα CPU: σε όλες αυτές τις περιπτώσεις, η προκύπτουσα χρήση SLAB είναι πολύ χαμηλή.

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

Ο Gushchin υποστηρίζει ότι αυτό δεν ήταν πρόβλημα όταν το πρόγραμμα οδήγησης kmem εισήχθη ως προαιρετικό χαρακτηριστικό που έπρεπε να ενεργοποιηθεί για κάθε ομάδα μνήμης.

Τώρα όμως, το πρόγραμμα οδήγησης kmem είναι ενεργοποιημένο από προεπιλογή για cgroup v1 και v2. Και δεδομένου ότι τα σύγχρονα συστήματα τείνουν να δημιουργούν μεγάλο αριθμό ομάδων c, η χρήση του SLAB είναι λιγότερο αποτελεσματική.

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

Η προτεινόμενη ενημέρωση κώδικα του Gushchin περιέχει δύο ημι-ανεξάρτητα στοιχεία: ένα API φόρτωσης υποσελίδας που μπορεί να χρησιμοποιηθεί στο μέλλον για λογιστικούς σκοπούς και ένα API mem_cgroup_ptr.

Πραγματοποιήθηκαν δοκιμές με το νέο πρόγραμμα οδήγησης από τη μνήμη του Gushchin έχουν δείξει ότι είναι δυνατό να αποκτήσετε 35% έως 42% περισσότερη μνήμη στο Linux στον ιστό front-end, στη μνήμη cache της βάσης δεδομένων και στο διακομιστή DNS και σε πολλούς άλλους φόρτους εργασίας.

Η πρόταση του Gushchin βρίσκεται αυτή τη στιγμή κάτω από το έμβλημα του "αίτημα για σχόλια". Εάν γίνει αποδεκτό, θα μπορούσε να ενσωματωθεί στην έκδοση του πυρήνα Linux του 2020.

πηγή: https://lkml.org/


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.