Το Facebook έχει προτείνει έναν νέο μηχανισμό διαχείρισης μνήμης slab για τον πυρήνα του Linux

Roman Gushchin (Ρομάν Γκουστσίν) από το Facebook δημοσιεύεται στη λίστα αλληλογραφίας των προγραμματιστών πυρήνα Linux ένα σύνολο ενημερώσεων κώδικα με την εφαρμογή ενός νέου ελεγκτή εκχώρησης μνήμης πλάκα (ελεγκτής μνήμης πλακών). Ο νέος ελεγκτής είναι αξιοσημείωτος για τη μετακίνηση της λογιστικής πλακών από το επίπεδο σελίδας μνήμης στο επίπεδο αντικειμένου πυρήνα, γεγονός που καθιστά δυνατή την κοινή χρήση σελίδων πλακών σε διαφορετικές cgroups, αντί να εκχωρεί ξεχωριστές κρυφές μνήμες πλακών για κάθε cgroup.

Η προτεινόμενη προσέγγιση καθιστά δυνατή την αύξηση της αποτελεσματικότητας της χρήσης slab, τη μείωση του μεγέθους της μνήμης που χρησιμοποιείται για την πλάκα κατά 30-45% και τη σημαντική μείωση της συνολικής κατανάλωσης μνήμης του πυρήνα. Με τη μείωση του αριθμού των μη κινητών πλακών, υπάρχει επίσης θετική επίδραση στη μείωση του κατακερματισμού της μνήμης. Ο νέος ελεγκτής μνήμης απλοποιεί σημαντικά τον κώδικα για την καταγραφή των πλακών και δεν απαιτεί τη χρήση περίπλοκων αλγορίθμων για τη δυναμική δημιουργία και διαγραφή κρυφών μνήμης slab για κάθε cgroup. Όλες οι ομάδες μνήμης c στη νέα εφαρμογή χρησιμοποιούν ένα κοινό σύνολο κρυφών μνήμης slab και η διάρκεια ζωής των κρυφών μνήμης slab δεν συνδέεται πλέον με τη διάρκεια ζωής αυτών που είναι εγκατεστημένα μέσω της cgroup περιορισμένο σχετικά με τη χρήση της μνήμης.

Η πιο ακριβής λογιστική των πόρων που εφαρμόζεται στον νέο ελεγκτή πλακών θα πρέπει θεωρητικά να φορτώνει περισσότερο την CPU, αλλά στην πράξη οι διαφορές αποδείχθηκαν ασήμαντες. Συγκεκριμένα, ο νέος ελεγκτής πλακών έχει χρησιμοποιηθεί εδώ και αρκετούς μήνες σε διακομιστές παραγωγής Facebook που χειρίζονται διαφορετικούς τύπους φόρτου εργασίας και δεν έχουν ακόμη εντοπιστεί αξιοσημείωτες παλινδρομήσεις. Ταυτόχρονα, υπάρχει σημαντική μείωση στην κατανάλωση μνήμης - σε ορισμένους κεντρικούς υπολογιστές ήταν δυνατή η εξοικονόμηση έως και 1 GB μνήμης, αλλά αυτός ο δείκτης εξαρτάται σε μεγάλο βαθμό από τη φύση του φορτίου, το συνολικό μέγεθος της μνήμης RAM, τον αριθμό των CPU και τα χαρακτηριστικά της εργασίας με τη μνήμη. Προηγούμενες δοκιμές έδειξε μείωση της κατανάλωσης μνήμης κατά 650-700 MB (42% της μνήμης slab) στο web front-end, 750-800 MB (35%) στο διακομιστή με προσωρινή μνήμη DBMS και 700 MB (36%) στον διακομιστή DNS.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο