heal.abstract |
Με την εμφάνιση νέων τεχνολογιών αποθήκευσης δεδομένων υψηλών αποδόσεων, όπως οι ultra-low latency SSDs και οι NVMe συσκευές αποθήκευσης, είναι δυνατή η ολοκλήρωση διαδικασιών Ι/Ο σε χρόνους της τάξης των μικροδευτερολέπτων. Σε τέτοια υψηλή επίδοση, το προστιθέμενο κόστος από τη στοίβα αποθήκευσης του πυρήνα linux έχει γίνει σημαντικός παράγοντας στη καθυστέρηση ολοκλήρωσης των λειτουργιών αρχείων. Επιπλέον, καθώς οι συσκευές αποθήκευσης γίνονται ακόμη πιο
γρήγορες, το σχετικό κόστος του πυρήνα αναμένεται να επιδεινωθεί. Το γεγονός αυτό αποτελεί κίνητρο για να επανεξετάσουμε τον τρόπο που ο πυρήνας διαχειρίζεται τις λειτουργίες αρχείων Ι/Ο και να βρούμε νέους τρόπους για τη μείωση του κόστους του.
Συγκεκριμένα, ο στόχος της παρούσας διπλωματικής εργασίας είναι να εξετάσει τη στοίβα αποθήκευσης του πυρήνα linux και να επικεντρωθεί σε ένα ιδιαίτερα κρίσιμο στοιχείο, την Page Cache, και τον τρόπο με τον οποίο επηρεάζει την απόδοση του συστήματος. Κατά βάση, εξετάσαμε τη προσπάθεια της Page Cache να βελτιώσει την απόδοση του συστήματος φέρνωντας δεδομένα προτού ζητηθούν μέσω του μηχανισμού Read-Ahead που έχει ως στόχο την αύξηση των ποσοστών ευστοχίας της. Επιπλέον, εξετάσαμε την αποτελεσματικότητά της σε διεργασίες που εμφανίζουν σειριακά πρότυπα πρόσβασης καθώς και τους περιορισμούς στην απόδοση της όταν εμφανίζονται διεργασίες με πιο πολύπλοκα πρότυπα πρόσβασης. Στα κεφάλαια που ακολουθούν, θα παρουσιάσουμε μια νέα επαναστατική τεχνολογία, το eBPF, καθώς και το πως μπορεί να χρησιμοποιηθεί για την ανάπτυξη ενός εργαλείου που θα αλλάξει τη συμπεριφορά του πυρήνα. Συγκεκριμένα, θα παρουσιάσουμε ένα νέο εργαλείο
που έχουμε αναπτύξει, εκμεταλλευόμενοι την τεχνολογία αυτή, που επιτρέπει στους χρήστες να καθορίσουν ποια δεδομένα θα προστεθούν στην Page Cache, προσαρμόζοντας έτσι το μοτίβο πρόσβασης της στις ανάγκες των εφαρμογών τους. Τέλος, θα επισημάνουμε τα οφέλη της εκμετάλλευσης του νέου εργαλείου μας μέσω σύνθετων δοκιμών με τη βοήθεια του εργαλείου FIO για τις λειτουργίες αρχείων read() και mmap(), όπως επίσης και το πως μπορεί να χρησιμοποιηθεί για να βελτιώσει την επίδοση ενός προγράμματος σε πραγματικό περιβάλλον και συγκεκριμένα την μέθοδο snapshotting του Firecracker. |
el |