Multikernel, ένα εξαιρετικό βοηθητικό πρόγραμμα για την εκτέλεση πολλαπλών πυρήνων χωρίς εικονικοποίηση

Βασικά σημεία:
  • Το Multikernel Linux επιτρέπει την ταυτόχρονη εκτέλεση ανεξάρτητων πυρήνων σε bare metal.
  • Βασισμένο στον πυρήνα Linux 7.0, χρησιμοποιεί CONFIG_MULTIKERNEL και υποστηρίζει αυτήν τη στιγμή την αρχιτεκτονική x86_64.
  • Εξαλείφει την επιβάρυνση της εικονικοποίησης (υπερεπόπτες KVM), επιτυγχάνοντας εναλλαγές περιβάλλοντος 2,5 φορές πιο γρήγορα.
  • Σε αντίθεση με τα κοντέινερ, οι παρουσίες δεν μοιράζονται τον πυρήνα, αποτρέποντας έτσι τις βλάβες ή τα τρωτά σημεία από το να επηρεάσουν ολόκληρο τον διακομιστή.
  • Χρησιμοποιήστε το εργαλείο Kerf μαζί με τις ενότητες Lazy CMA και DAXFS για να διαχειριστείτε δυναμικά τους πόρους και να εκκινήσετε εικόνες Docker.

Πολυπύρηνο Linux

Πέρυσι συζητήσαμε εδώ στο ιστολόγιο μια πρόταση από την ByteDance (δημιουργό του TikTok) για ένα βοηθητικό πρόγραμμα που ονομάζεται Parker (PARTitioned KERnel), μια πειραματική τεχνολογία που επιτρέπει την ταυτόχρονη εκτέλεση πολλαπλών πυρήνων Linux. Και τώρα, λίγο περισσότερο από ενάμιση χρόνο αργότερα, κυκλοφόρησε ένα νέο δημόσιο βοηθητικό πρόγραμμα από το έργο, το "Multikernel Linux (mklinux-v7.0-mk2)".

Αυτή η εξέλιξη εισάγει μια εξειδικευμένη παραλλαγή του πυρήνα Linux που επιτρέπει την ταυτόχρονη εκτέλεση πολλαπλών ανεξάρτητων στιγμιότυπων πυρήνα μέσα σε έναν μόνο φυσικό διακομιστή. Λειτουργώντας απευθείας στο βασικό του επίπεδο, αυτή η τεχνολογία εξαλείφει εντελώς την ανάγκη για hypervisors ή επίπεδα εικονικοποίησης, παρέχοντας σε κάθε στιγμιότυπο άμεση πρόσβαση στην εκχωρημένη μνήμη, την CPU και τις συσκευές.

ByteDance-Parker-multikernel
σχετικό άρθρο:
Parker: Η νέα τεχνολογία που επιτρέπει την εκτέλεση πολλαπλών πυρήνων Linux χωρίς εικονικοποίηση

Με βάση τον πρόσφατα κυκλοφορήσαντα πυρήνα Linux 7.0, το έργο επιτρέπει την ενεργοποίηση αυτής της δυνατότητας μέσω της παραμέτρου διαμόρφωσης CONFIG_MULTIKERNEL . Εάν αυτή η επιλογή είναι απενεργοποιημένη, ο πυρήνας που προκύπτει είναι ακριβώς ο ίδιος και συμπεριφέρεται όπως το τυπικό Linux 7.0. Προς το παρόν, αυτή η πρώτη έκδοση (v7.0-mk2) υποστηρίζει αποκλειστικά αρχιτεκτονικές x86_64 και έχει σχεδιαστεί για να γεφυρώσει το χάσμα απόδοσης και ασφάλειας μεταξύ της παραδοσιακής εικονικοποίησης και της απομόνωσης κοντέινερ.

Απομόνωση χωρίς ποινή απόδοσης

Το μεγαλύτερο πρόβλημα με την εικονικοποίηση είναι ο «φόρος» απόδοσης που χρεώνουν οι υπερεπόπτες. Αντίθετα, το Multikernel Linux εξαλείφει τις μεταβάσεις εξόδου από εικονικές μηχανές , τη μετάφραση μνήμης δεύτερου επιπέδου και την επιβάρυνση που δημιουργείται από τα μοντέλα συσκευών.

Σύμφωνα με δεδομένα απόδοσης που δημοσιεύθηκαν μετά από δοκιμές σε επεξεργαστές Xeon Gold 5418Y (Sapphire Rapids), το σύστημα πολλαπλών πυρήνων επιδεικνύει δραματική αύξηση στην ταχύτητα εκτέλεσης σε σύγκριση με τους φιλοξενούμενους επεξεργαστές KVM. Για παράδειγμα, η εναλλαγή περιβάλλοντος μεταξύ διεργασιών είναι 2,5 φορές ταχύτερη, η καθυστέρηση διοχέτευσης μειώνεται κατά περισσότερο από το μισό (2,18x) και οι κλήσεις του βασικού συστήματος, όπως οι λειτουργίες ανάγνωσης και εγγραφής, κερδίζουν περισσότερο από 25% σε χρόνο απόκρισης.

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

Δυναμική Ανάθεση και Ενορχήστρωση με Kerf

Το Multikernel Linux λειτουργεί χρησιμοποιώντας έναν κεντρικό πυρήνα που διαχειρίζεται μια μεγάλη ομάδα πόρων (CPU, RAM και συσκευές PCI). Αξιοποιώντας την υπάρχουσα δομή δέντρου συσκευών (προσβάσιμη στο /sys/fs/multikernel/), ο πυρήνας διαχωρίζει αυτήν την ομάδα και εκκινεί "θυγατρούς πυρήνες" μέσω του εγγενούς υποσυστήματος kexec_file_load(). Μέσω των δυνατοτήτων hotplug του Linux, αυτοί οι πόροι μπορούν να μετακινηθούν δυναμικά μεταξύ παρουσιών χωρίς να απαιτείται επανεκκίνηση του διακομιστή, εξασφαλίζοντας προβλέψιμη και ρυθμιζόμενη απόδοση σε πραγματικό χρόνο.

Για να οργανώσουν αυτό το οικοσύστημα, οι προγραμματιστές έχουν εισαγάγει το εργαλείο γραμμής εντολών Kerf . Αυτό το βοηθητικό πρόγραμμα διαχειρίζεται ολόκληρο τον κύκλο ζωής των στιγμιότυπων, βασιζόμενο σε συμπληρωματικές ενότητες ανοιχτού κώδικα. Ένα από αυτά είναι το Lazy CMA, το οποίο διαθέτει συνεχή φυσική μνήμη κατά τον χρόνο εκτέλεσης χωρίς να απαιτείται καμία διαμόρφωση πριν από την εκκίνηση.

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

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

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

Τέλος, αν ενδιαφέρεστε να μάθετε περισσότερα, μπορείτε να βρείτε τις λεπτομέρειες στον παρακάτω σύνδεσμο.


Προσθήκη ως προτιμώμενης πηγής στην Google