Oracle badé ngadesain ulang DTrace pikeun Linux nganggo eBPF

Perusahaan Oracle dilaporkeun ngeunaan karya mindahkeun parobahan DTrace patali ka hulu jeung rencana pikeun nerapkeun DTrace téhnologi debugging dinamis dina luhureun infrastruktur kernel Linux Ubuntu baku, nyaéta ngagunakeun subsistem kayaning eBPF. Mimitina, masalah utama nganggo DTrace dina Linux nyaéta sauyunan tingkat lisénsi, tapi dina 2018 Oracle dilisensikeun deui Kodeu DTrace handapeun GPLv2.

DTrace geus waktos na lami ditawarkeun salaku bagian tina kernel nambahan pikeun distribusi Oracle Linux Ubuntu, tapi merlukeun patch kernel tambahan pikeun pamakéan dina sebaran séjén, nu ngawatesan pamakéan téknologi ieu. Salaku conto, Oracle disiapkeun parentah lengkep pikeun masang sareng nganggo DTrace dina Fedora Linux. Majelis diperlukeun pikeun instalasi parabot sareng nganggo kernel Linux anu diwangun deui tina tambalan. Pikeun ngajadikeun otomatis palaksanaan rakitan kernel sareng patches Oracle sareng Fedora, disarankeun naskah.

eBPF mangrupakeun juru bytecode diwangun kana kernel Linux Ubuntu nu ngidinan Anjeun pikeun nyieun pawang operasi jaringan, ngawas aktivitas sistem, intercept panggero sistem, aksés kontrol, prosés acara kalayan pelestarian tina timing (perf_event_open), ngitung frékuénsi sarta waktu operasi, ngalakukeun tracing. ngagunakeun kprobes / uprobes / tracepoints. Hatur nuhun kana pamakéan kompilasi JIT, bytecode ditarjamahkeun kana parentah mesin on laleur jeung dieksekusi kalawan kinerja kode asli. DTrace tiasa dilaksanakeun dina luhureun eBPF, sami sareng kumaha éta dina luhureun eBPF работают parabot tracing aya.

Téknologi DTrace dikembangkeun pikeun sistem operasi Solaris pikeun ngabéréskeun masalah nyukcruk dinamis tina kernel sistem sareng aplikasi tungtung, masihan pangguna kamampuan pikeun ngawas paripolah sistem sacara rinci sareng ngadiagnosa masalah sacara real waktos. Salila debugging, DTrace henteu mangaruhan operasi aplikasi anu ditalungtik sareng henteu mangaruhan kinerjana dina cara naon waé, anu ngamungkinkeun pikeun ngatur analisa sistem anu ngajalankeun dina laleur. Tina kaunggulan DTrace, basa D tingkat luhur, sami sareng AWK, kacatet, dimana éta langkung gampang nyerat skrip tilas tibatan nalika ngagunakeun alat pikeun nyerat pawang anu ditawarkeun pikeun eBPF dina C, Python sareng Lua sareng perpustakaan éksternal. .

Insinyur Oracle ogé ngusahakeun ngawangun backend eBPF pikeun GCC sareng parantos diterbitkeun set patch pikeun ngahijikeun rojongan eBPF kana GCC na kahontal kaasup kode pikeun ngarojong eBPF di GNU binutils. Mimitina, backend pikeun dukungan eBPF dumasar kana téknologi LLVM, tapi Oracle museurkeun penampilan GCC tina kamampuan biasa pikeun ngahasilkeun program pikeun eBPF, anu bakal ngamungkinkeun ngagunakeun hiji toolkit pikeun ngawangun kernel Linux sareng ngawangun program pikeun eBPF.

Salian backend pikeun ngahasilkeun bytecode, patch anu diusulkeun pikeun GCC ogé kalebet palabuhan libgcc pikeun eBPF sareng alat pikeun ngahasilkeun file ELF, ngamungkinkeun pikeun ngaéksekusi kode dina mesin virtual eBPF nganggo loader anu disayogikeun ku kernel. Pikeun ayeuna, kode C tiasa ditarjamahkeun kana bytecode (henteu sadayana fitur basa sayogi), tapi ka hareupna diperkirakeun ngalegaan fitur basa C anu sayogi dianggo, nambihan dukungan pikeun basa sanés, nyiptakeun simulator, sareng nambihan dukungan GCC. pikeun debugging program eBPF tanpa ngamuat kana kernel.

sumber: opennet.ru

Tambahkeun komentar