Περίληψη
To μοντέλο εκτέλεσης Συναρτήσεων ως Υπηρεσία (FaaS) έχει κυριαρχήσει στον τομέα του Υπολογιστικού Νέφους (Cloud Computing). Οι FaaS εφαρμογές αναπτύσσονται ως αυτόνομες συναρτήσεις για τις οποίες οι χρήστες παρέχουν τον πηγαίο κώδικα ενω οι πάροχοι διασφαλίζουν τις εξαρτήσεις (π.χ. σύστημα εκτέλεσης) και τους απαραίτητους πόρους (μνήμη, υπολογιστική ισχύς κλπ) για την εκτέλεσή τους. Με αυτόν τον τρόπο απλοποιείται ο προγραμματισμός: α) οι χρήστες απαλλάσσονται απο τη διαχείριση ενός ολόκληρου συστήματος και β) η διαχείριση των πόρων γίνεται ευκολότερη, δηλαδή οι πάροχοι μπορούν να κλιμακώνουν δυναμικά και με διαφάνεια τους πόρους που δεσμεύουν για κάθε συνάρτηση με βάση τον εισερχόμενο φόρτο αιτημάτων. Συνήθως, η κατανομή πόρων ελέγχεται αυξάνοντας ή μειώνοντας τον αριθμό των στιγμιοτύπων συναρτήσεων που εξυπηρετούν αιτήματα. Έτσι, η ελαστικότητα των πόρων αποτελεί ένα από τα βασικά χαρακτηριστικά του FaaS. Επιπλέον, η κοινή χρήση πόρων μεταξύ πολλών διαφορετικών στιγμιοτύπων βελτιώνει ...
To μοντέλο εκτέλεσης Συναρτήσεων ως Υπηρεσία (FaaS) έχει κυριαρχήσει στον τομέα του Υπολογιστικού Νέφους (Cloud Computing). Οι FaaS εφαρμογές αναπτύσσονται ως αυτόνομες συναρτήσεις για τις οποίες οι χρήστες παρέχουν τον πηγαίο κώδικα ενω οι πάροχοι διασφαλίζουν τις εξαρτήσεις (π.χ. σύστημα εκτέλεσης) και τους απαραίτητους πόρους (μνήμη, υπολογιστική ισχύς κλπ) για την εκτέλεσή τους. Με αυτόν τον τρόπο απλοποιείται ο προγραμματισμός: α) οι χρήστες απαλλάσσονται απο τη διαχείριση ενός ολόκληρου συστήματος και β) η διαχείριση των πόρων γίνεται ευκολότερη, δηλαδή οι πάροχοι μπορούν να κλιμακώνουν δυναμικά και με διαφάνεια τους πόρους που δεσμεύουν για κάθε συνάρτηση με βάση τον εισερχόμενο φόρτο αιτημάτων. Συνήθως, η κατανομή πόρων ελέγχεται αυξάνοντας ή μειώνοντας τον αριθμό των στιγμιοτύπων συναρτήσεων που εξυπηρετούν αιτήματα. Έτσι, η ελαστικότητα των πόρων αποτελεί ένα από τα βασικά χαρακτηριστικά του FaaS. Επιπλέον, η κοινή χρήση πόρων μεταξύ πολλών διαφορετικών στιγμιοτύπων βελτιώνει περαιτέρω την αποδοτική διαχείριση τους. Η παρούσα διατριβή εστιάζει στους μηχανισμούς του Λειτουργικού Συστήματος (ΛΣ) που σχετίζονται με τα συστήματα αρχείων και με τη διαχείριση μνήμης των συναρτήσεων οι οποίες εκτελούνται μέσα σε Εικονικές Μηχανές (VMs). Μία αρχική εξέταση των περιβάλλοντων εκτέλεσης και απομόνωσης (sandbox runtimes) που χρησιμοποιούνται για εφαρμογές χωρίς διακομιστή (Serverless) αποκάλυψε σημαντικές καθυστερήσεις κατά την εκκίνηση των πρώτων στιγμιοτύπων από συναρτήσεις (cold starts), λόγω του συνόρου εικονικοποίησης: το σύστημα οικοδεσπότη (host) και το εικονικό σύστημα (guest) διατηρούν διαφορετικές σημασιολογίες στα συστήματα αρχείων τους. Για το σκοπό αυτό, η διατριβή αυτή παρουσιάζει και υλοποιεί έναν οδηγό αποθήκευσης για συναρτήσεις που εκτελούνται ως δοχεία (containers) μέσα σε εικονικές μηχανές, διατηρώντας ταυτόχρονα τη συμβατότητα με την εκτέλεση στο σύστημα του οικοδεσπότη. Η προτεινόμενη προσέγγιση γεφυρώνει το χάσμα μεταξύ των δοχείων που εκτελούνται σε εικονικές μηχανές και των παραδοσιακών δοχείων που εκτελούνται στον οικοδεσπότη, καθώς μοιράζονται αποτελεσματικά τις εξαρτήσεις τους αξιοποιώντας την προσωρινή μνήμη κεντρικών σελίδων του ΛΣ του οικοδεσπότη. Αυτό επιτυγχάνεται με το σχεδιασμό και την υλοποίηση μιας πολυεπίπεδης όψης του δοχείου στον οικοδεσπότη, στην οποία κάθε επίπεδο αντιστοιχίζεται σε μια εικονική συσκευή αποθήκευσης (block-based), και μπορεί αυτόνομα να συνδεθεί και να διαμοιραστεί σε πολλαπλές εικονικές μηχανές. Ως αποτέλεσμα, κάθε εικονική μηχανή μπορεί να προετοιμάσει μια ενοποιημένη όψη του συστήματος αρχείων που χρειάζεται το δοχείο (container filesystem) χωρίς όμως να κληρονομεί τις σημασιολογίες του συστήματος αρχείων από τον οικοδεσπότη, ενώ ταυτόχρονα μπορεί να επωφελείται από τα δεδομένα που βρίσκονται αποθηκευμένα στην προσωρινή μνήμη κεντρικών σελίδων του ΛΣ του οικοδεσπότη. Η αξιολόγηση δείχνει ότι, σε αντίθεση με άλλους σχετικούς μηχανισμούς αποθήκευσης, η προτεινόμενη λύση μπορεί να εκκινήσει 80 συναρτήσεις σε διαφορετικές εικονικές μηχανές σε λιγότερο από 4 δευτερόλεπτα, χάρη στην κοινή χρήση της προσωρινής μνήμης κεντρικών σελίδων του οικοδεσπότη, καθώς και να μειώσει τις προσπελάσεις στο δίσκο κατά 97,51%. Επιπλέον, το μοντέλο πολλαπλών δοχείων ανά εικονική μηχανή (N:1) αναγνωρίζεται ως το καταλληλότερο για τη βελτίωση της κοινής χρήσης μεταξύ των στιγμιοτύπων συναρτήσεων. Σε αυτό το μοντέλο, σε σύγκριση με το ένα δοχείο ανά εικονική μηχανή (1:1), περισσότερα του ενός στιγμιότυπα συναρτήσεων μοιράζονται την ίδια Εικονική Μηχανή και το ήδη αρχικοποιημένο περιβάλλον εκτέλεσης, επιτυγχάνοντας έτσι μικρότερες καθυστερήσεις και πιο αποδοτική χρήση πόρων. Ωστόσο, το μοντέλο αυτό απαιτεί μεγαλύτερες εικονικές μηχανές, ικανές να φιλοξενήσουν την ταυτόχρονη εκτέλεση πολλαπλών στιγμιοτύπων συναρτήσεων. Αυτοί οι πόροι παραμένουν δεσμευμένοι — έστω και ανενεργοί — ακόμη και όταν ο φόρτος είναι χαμηλός και τα στιγμιότυπα συναρτήσεων τερματίζονται και αποδεσμεύονται. Ενώ οι υπολογιστικοί πόροι (CPU) που εκχωρούνται σε συναρτήσεις απομονωμένες σε εικονικες μηχανές μπορούν να προσαρμοστούν δυναμικά, η ελαστικότητα μνήμης παραμένει μια πρόκληση. H αποσύνδεση (hot-unplugging) μνήμης υφίσταται μεγάλες καθυστερήσεις ανάκτησης και καταναλώνει πολύτιμους υπολογιστικούς πόρους. O κύριος παράγοντας που εμποδίζει την απoδοτική αποδέσμευση μνήμης μέσω αποσύνδεσης είναι η έλλειψη επίγνωσης του διαχειριστή μνήμης του ΛΣ. Ως εκ τούτου, προτείνεται ένας νέος μηχανισμός για ταχεία και αποδοτική αποδέσμευση της μνήμης, ειδικά προσανατολισμένος σε εικονικές μηχανές που εκτελούν στιγμιότυπα συναρτήσεων. Το βασικό ερευνητικό εύρημα πίσω από τον μηχανισμό αυτό είναι ο διαχωρισμός των συνδεδεμένων (hot-plug) περιοχών μνήμης από την αρχική μνήμη της εικονικής μηχανής, γεγονός που επιτρέπει τον χρονικό περιορισμό των δεσμεύσεων μνήμης μέσα σε αυτές τις περιοχές και κατ’ επέκταση την ταχεία αποδέσμευσή τους με την πάροδο του χρονικού διαστήματος δέσμευσης, δηλαδή με την ολοκλήρωση της ζωής ενός στιγμιοτύπου. Ο μηχανισμός υλοποιήθηκε ως επέκταση του μηχανισμού διαχείρισης μνήμης του ΛΣ. Η πειραματική αξιολόγηση αποδεικνύει ότι επιτυγχάνει βελτίωση κατά μία τάξη μεγέθους σε σχέση με την τρέχουσα τεχνολογία, διατηρώντας περιορισμένη την καθυστέρηση στην ουρά (tail latencies) κατά την ανάκτηση μνήμης και επιτυγχάνοντας ανάκτηση πολλών GiB μνήμης σε λιγότερο από ένα δευτερόλεπτο, υπό ρεαλιστικά φορτία FaaS. Συνολικά, η διατριβή αυτή επανεξετάζει τους σύγχρονους μηχανισμούς των ΛΣ, που εμπλέκονται στην προετοιμασία των περιβαλλόντων απομόνωσης των συναρτήσεων (συστήματα αρχείων και διαχείριση μνήμης) και προτείνει τεχνικές που τους επεκτείνουν, ώστε να επιτυγχάνεται: α) η ταχύτερη κλιμάκωση όταν ο εισερχόμενος φόρτος το απαιτεί, β) ο πιο αποδοτικός διαμοιρασμός πόρων μεταξύ πολλαπλών διαφορετικών περιβαλλόντων απομόνωσης και γ) ταχύτερη ανάκτηση πόρων κατά την αποκλιμάκωση.
περισσότερα
Περίληψη σε άλλη γλώσσα
The Function-as-a-Service (FaaS) execution model has dominated cloud computing. FaaS applications are developed as standalone functions for which users provide the source code, while providers secure the dependencies (e.g., runtime) and the necessary resources (e.g., memory, CPU) for their execution. Programming is simplified: (i) developers are alleviated from the burden to manage an entire system and (ii) resource management becomes easier, i.e., providers can scale dynamically and transparently the resources allocated per function based on the incoming load of requests. Typically, resource allocation is controlled by increasing or decreasing the number of function instances that serve requests. Thus, resource elasticity is one of the key defining characteristics of FaaS. Moreover, sharing common resources among multiple instances further improves resource efficiency. This thesis focuses on the OS mechanisms related to the filesystems and the memory management of functions executed i ...
The Function-as-a-Service (FaaS) execution model has dominated cloud computing. FaaS applications are developed as standalone functions for which users provide the source code, while providers secure the dependencies (e.g., runtime) and the necessary resources (e.g., memory, CPU) for their execution. Programming is simplified: (i) developers are alleviated from the burden to manage an entire system and (ii) resource management becomes easier, i.e., providers can scale dynamically and transparently the resources allocated per function based on the incoming load of requests. Typically, resource allocation is controlled by increasing or decreasing the number of function instances that serve requests. Thus, resource elasticity is one of the key defining characteristics of FaaS. Moreover, sharing common resources among multiple instances further improves resource efficiency. This thesis focuses on the OS mechanisms related to the filesystems and the memory management of functions executed inside Virtual Machines (VMs). An initial examination of sandboxing runtimes used in serverless environments revealed overhead in function cold starts, caused by the virtualization barrier arising from differing filesystem semantics between the host and the guest. To that end, this thesis introduces and implements a storage driver for functions executed as containers inside Virtual Machines, while maintaining compatibility with host-native execution. The approach narrows the gap between guest containers and host containers by efficiently sharing function dependencies through the host page cache. This is achieved by constructing a block-based layered container view on the host, in which each layer is pluggable and shareable across multiple VMs. As a result, each guest can prepare a union filesystem view of the container without inheriting the host’s filesystem semantics, while still benefiting from shared cached data at the host level. Evaluation results show that, in contrast to other block-based drivers, the proposed solution can boot 80 lightweight VM containers in under 4 seconds, owing to shared host cache buffers and a 97.51% reduction in disk I/O. Furthermore, the multi-container-per-VM model (N:1) is identified as the most suitable approach for improving shareability between function instances. In this model, compared to the single-container-per-VM (1:1), more than one function instances share the same VM and initialized runtime and thereby achieve better latencies and more efficient resource usage. However this model naturally requires larger VMs, that will be able to accommodate the deployment of multiple concurrent function instances. These resources remain allocated –albeit idle– even when the load is low, as function instances terminate and get reclaimed. While compute resources assigned to VM sandboxed functions can be seamlessly adjusted on the fly, memory elasticity remains challenging. Hot(un)plugging memory resources suffers from long reclamation latencies and occupies valuable CPU resources. The obliviousness of the OS memory manager to hotplugged memory is identified as the key factor hindering hot-unplug performance. To address this challenge, a novel mechanism is introduced for fast and efficient VM memory hot-(un)plug, specifically targeting VM-sandboxed serverless functions. The central insight behind the new mechanism is the segregation of hot-plugged memory regions from regular VM memory, thereby bounding the lifetime of allocations within these regions and enabling their rapid reclamation. The mechanism is implemented as an extension to the OS memory manager. Experimental evaluation demonstrates that it achieves an order-of-magnitude improvement over the state of the art, maintaining bounded tail latencies during memory reclamation and enabling sub-second reclamation of multiple GiBs of memory under realistic FaaS load. Overall, this thesis revisits today’s OS mechanisms involved in FaaS sandboxes filesystem preparation and memory management and proposes techniques that extend them in order to (i) scale up faster when the incoming load suggests it, (ii) share resources more efficiently among multiple sandboxes and (iii) reclaim resources faster when scaling down.
περισσότερα