Perusahaan Oracle
DTrace sudah
eBPF adalah penerjemah bytecode yang dibangun ke dalam kernel Linux yang memungkinkan Anda membuat pengendali operasi jaringan, memantau aktivitas sistem, mencegat panggilan sistem, mengontrol akses, memproses peristiwa dengan ketepatan waktu (perf_event_open), menghitung frekuensi dan waktu eksekusi operasi, melakukan penelusuran menggunakan kprobes /upprobe /tracepoint. Berkat penggunaan kompilasi JIT, bytecode diterjemahkan dengan cepat ke dalam instruksi mesin dan dieksekusi dengan kinerja kode asli. DTrace dapat diimplementasikan di atas eBPF, mirip dengan penerapannya di atas eBPF
Teknologi DTrace dikembangkan untuk sistem operasi Solaris untuk memecahkan masalah penelusuran dinamis kernel sistem dan aplikasi akhir, memberikan pengguna kemampuan untuk memantau perilaku sistem secara detail dan mendiagnosis masalah secara real time. Selama proses debugging, DTrace tidak mempengaruhi pengoperasian aplikasi yang sedang dipelajari dan tidak mempengaruhi kinerjanya dengan cara apa pun, yang memungkinkan Anda mengatur analisis sistem yang berjalan dengan cepat. Salah satu kelebihan DTrace adalah bahasa D tingkat tinggi, mirip dengan AWK, yang membuat skrip penelusuran jauh lebih mudah daripada menggunakan alat yang ditawarkan untuk menulis penangan eBPF dalam C, Python, dan Lua dengan perpustakaan eksternal.
Insinyur dari Oracle juga sedang berupaya membuat backend eBPF untuk GCC dan telah mempublikasikannya
Selain backend pembuatan bytecode, patch yang diusulkan untuk GCC juga mencakup port libgcc untuk eBPF dan alat untuk menghasilkan file ELF, sehingga memungkinkan untuk mengeksekusi kode di mesin virtual eBPF menggunakan loader yang disediakan kernel. Untuk saat ini kode dalam bahasa C dapat diterjemahkan ke dalam bytecode (tidak semua fitur bahasa tersedia), namun kedepannya diharapkan dapat memperluas kemampuan bahasa C yang tersedia untuk digunakan, menambahkan dukungan bahasa lain, membuat simulator, dan tambahkan dukungan GCC untuk men-debug program eBPF tanpa memuat ke dalam kernel.
Sumber: opennet.ru