Η Oracle σκοπεύει να επεξεργαστεί ξανά το DTrace για Linux χρησιμοποιώντας eBPF

Oracle Company αναφερθεί σχετικά με την εργασία για τη μεταφορά αλλαγών που σχετίζονται με το DTrace στο upstream και τα σχέδια για την εφαρμογή της τεχνολογίας δυναμικής αποσφαλμάτωσης DTrace πάνω από την τυπική υποδομή πυρήνα Linux, δηλαδή με χρήση υποσυστημάτων όπως το eBPF. Αρχικά, το κύριο πρόβλημα με τη χρήση του DTrace στο Linux ήταν η ασυμβατότητα σε επίπεδο άδειας χρήσης, αλλά το 2018 η Oracle εκ νέου άδεια Κωδικός DTrace κάτω από το GPLv2.

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

Το eBPF είναι ένας διερμηνέας bytecode ενσωματωμένος στον πυρήνα του Linux που σας επιτρέπει να δημιουργείτε χειριστές λειτουργιών δικτύου, να παρακολουθείτε τη λειτουργία του συστήματος, να παρακολουθείτε κλήσεις συστήματος, να ελέγξετε την πρόσβαση, να επεξεργάζεστε συμβάντα με χρονομέτρηση (perf_event_open), συχνότητα μέτρησης και χρόνο εκτέλεσης λειτουργιών, εκτέλεση ιχνηλάτησης χρησιμοποιώντας kprobes /ανιχνευτές /ιχνοστοιχεία. Χάρη στη χρήση της μεταγλώττισης JIT, ο bytecode μεταφράζεται εν κινήσει σε οδηγίες μηχανής και εκτελείται με την απόδοση του εγγενούς κώδικα. Το DTrace μπορεί να εφαρμοστεί πάνω από το eBPF, παρόμοια με το πώς υλοποιείται πάνω από το eBPF εργάζονται υπάρχοντα εργαλεία ανίχνευσης.

Η τεχνολογία DTrace αναπτύχθηκε για το λειτουργικό σύστημα Solaris για να λύσει το πρόβλημα της δυναμικής ανίχνευσης του πυρήνα του συστήματος και των τελικών εφαρμογών, δίνοντας στον χρήστη τη δυνατότητα να παρακολουθεί τη συμπεριφορά του συστήματος λεπτομερώς και να διαγνώσει προβλήματα σε πραγματικό χρόνο. Κατά τη διαδικασία εντοπισμού σφαλμάτων, το DTrace δεν επηρεάζει τη λειτουργία των υπό μελέτη εφαρμογών και δεν επηρεάζει με κανέναν τρόπο την απόδοσή τους, γεγονός που σας επιτρέπει να οργανώσετε την ανάλυση των λειτουργικών συστημάτων εν κινήσει. Ένα από τα δυνατά σημεία του DTrace είναι η γλώσσα D υψηλού επιπέδου, παρόμοια με το AWK, στην οποία είναι πολύ πιο εύκολο να δημιουργηθούν σενάρια ανίχνευσης παρά να χρησιμοποιηθούν τα εργαλεία που προσφέρονται για τη σύνταξη χειριστών eBPF σε C, Python και Lua με εξωτερικές βιβλιοθήκες.

Οι μηχανικοί της Oracle εργάζονται επίσης για τη δημιουργία ενός eBPF backend για το GCC και έχουν ήδη δημοσιεύσει σετ μπαλωμάτων για την ενσωμάτωση της υποστήριξης eBPF στο GCC και επιτεύχθηκε συμπεριλαμβανομένου κώδικα για την υποστήριξη eBPF σε binutils GNU. Αρχικά, το backend για την υποστήριξη eBPF βασίζεται σε τεχνολογίες LLVM, αλλά η Oracle ενδιαφέρεται για την εμφάνιση στο GCC μιας τυπικής ικανότητας δημιουργίας προγραμμάτων για eBPF, η οποία θα επιτρέπει τη χρήση μιας εργαλειοθήκης τόσο για την κατασκευή του πυρήνα του Linux όσο και για τη δημιουργία προγραμμάτων για eBPF.

Εκτός από το backend δημιουργίας bytecode, οι προτεινόμενες ενημερώσεις κώδικα για το GCC περιλαμβάνουν επίσης μια θύρα libgcc για eBPF και εργαλεία για τη δημιουργία αρχείων ELF, καθιστώντας δυνατή την εκτέλεση κώδικα στην εικονική μηχανή eBPF χρησιμοποιώντας φορτωτές που παρέχονται από τον πυρήνα. Προς το παρόν, ο κώδικας στη γλώσσα C μπορεί να μεταφραστεί σε bytecode (δεν είναι διαθέσιμες όλες οι λειτουργίες της γλώσσας), αλλά στο μέλλον αναμένεται να επεκταθούν οι δυνατότητες της γλώσσας C που είναι διαθέσιμες για χρήση, να προστεθεί υποστήριξη για άλλες γλώσσες, να δημιουργηθεί ένας προσομοιωτής και προσθέστε υποστήριξη GCC για τον εντοπισμό σφαλμάτων προγραμμάτων eBPF χωρίς φόρτωση στον πυρήνα.

Πηγή: opennet.ru

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