Oracle Company
DTrace ήδη
Το 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 και έχουν ήδη δημοσιεύσει
Εκτός από το backend δημιουργίας bytecode, οι προτεινόμενες ενημερώσεις κώδικα για το GCC περιλαμβάνουν επίσης μια θύρα libgcc για eBPF και εργαλεία για τη δημιουργία αρχείων ELF, καθιστώντας δυνατή την εκτέλεση κώδικα στην εικονική μηχανή eBPF χρησιμοποιώντας φορτωτές που παρέχονται από τον πυρήνα. Προς το παρόν, ο κώδικας στη γλώσσα C μπορεί να μεταφραστεί σε bytecode (δεν είναι διαθέσιμες όλες οι λειτουργίες της γλώσσας), αλλά στο μέλλον αναμένεται να επεκταθούν οι δυνατότητες της γλώσσας C που είναι διαθέσιμες για χρήση, να προστεθεί υποστήριξη για άλλες γλώσσες, να δημιουργηθεί ένας προσομοιωτής και προσθέστε υποστήριξη GCC για τον εντοπισμό σφαλμάτων προγραμμάτων eBPF χωρίς φόρτωση στον πυρήνα.
Πηγή: opennet.ru