Oracle bermaksud mengerjakan ulang DTrace untuk Linux menggunakan eBPF

Perusahaan Oracle dilaporkan tentang upaya mentransfer perubahan terkait DTrace ke upstream dan rencana untuk mengimplementasikan teknologi debugging dinamis DTrace di atas infrastruktur kernel Linux standar, yaitu menggunakan subsistem seperti eBPF. Awalnya masalah utama penggunaan DTrace di Linux adalah ketidakcocokan di tingkat lisensi, tetapi pada tahun 2018 Oracle berlisensi ulang Kode DTrace di bawah GPLv2.

DTrace sudah lama ditawarkan sebagai bagian dari kernel yang diperluas untuk distribusi Oracle Linux, tetapi untuk penggunaannya di distribusi lain memerlukan penggunaan patch kernel tambahan, yang membatasi penggunaan teknologi ini. Sebagai contoh, Oracle siap petunjuk rinci untuk menginstal dan menggunakan DTrace di Fedora Linux. Perakitan diperlukan untuk instalasi peralatan dan penggunaan kernel Linux yang dibangun kembali tambalan. Untuk mengotomatiskan eksekusi pembuatan kernel dengan patch Oracle dan Fedora, diusulkan naskah.

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 Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ alat penelusuran yang ada.

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 set tambalan untuk mengintegrasikan dukungan eBPF ke GCC dan tercapai termasuk kode untuk mendukung eBPF di GNU binutils. Awalnya, backend untuk dukungan eBPF didasarkan pada teknologi LLVM, tetapi Oracle tertarik dengan munculnya kemampuan standar di GCC untuk menghasilkan program untuk eBPF, yang memungkinkan penggunaan satu toolkit baik untuk membangun kernel Linux maupun untuk membangun program. untuk eBPF.

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

Tambah komentar