Oracle Corporation töötamisest seoses DTrace'iga seotud muudatuste edastamisega upstream'ile ja plaanidest rakendada DTrace dünaamilise silumise tehnoloogiat Linuxi põhinfrastruktuuri kaudu, kasutades näiteks selliseid alamsüsteeme nagu eBPF. Esialgu oli DTrace'i kasutamise peamine probleem Linuxis litsentsitaseme kokkusobimatus, kuid 2018. aastal DTrace'i koodi GPLv2 alusel.
DTrace on juba olemas laiendatud tuumas Oracle Linuxi distributsioonis, kuid selle kasutamiseks teistes distributsioonides on vajalik tuuma täiendavate patch'ide rakendamine, mis piirab antud tehnoloogia kasutamist. Näiteks, Oracle jagab põhjalikku juhendit DTrace'i installimiseks ja kasutamiseks Fedora Linuxis. Installimiseks on vajalik ette valmistada ja kasutada Linuxi tuuma, mis on kokku pandud . Oracle'i ja Fedora patch'idega tuuma koostamise automatiseerimiseks on välja pakutud .
eBPF on Linux'i kernelisse sisseehitatud bytecode'i interpreter, mis võimaldab luua võrgutegevuse töötlejat, jälgida süsteemide tööd, kinni püüda süsteemikõnesid, kontrollida ligipääsu, hallata sündmusi aja tähistamisega (perf_event_open), arvestada operatsioonide sagedust ja kestust, ning teostada jälgimist kprobes/uprobes/tracepoints'i abil. JIT-kompileerimise kasutamine võimaldab bytecode'i reaalajas masiinijuhisteks transleerimist, pakkudes natiivse koodi tasemel suurendatud jõudlust. DTrace'i saab rakendada eBPF-i peal, sarnaselt sellele, kuidas see on eBPF-i peal. olemasolevad jälgimisvahendid.
DTrace tehnoloogia, mis on välja töötatud Solaris operatsioonisüsteemi jaoks, lahendab süsteemi tuumade ja lõpprakenduste dünaamilise jälgimise ülesandeid, võimaldades kasutajal põhjalikult jälgida süsteemi käitumist ja reaalajas diagnostikat teha. DTrace ei mõjuta silumiste protsessi uuringu all olevate rakenduste toimimist ega mõjuta nende jõudlust, mis võimaldab korraldada töötavate süsteemide analüüsi lennult. DTrace tugevateks külgedeks on kõrgtasemeline D keel, mis sarnaneb AWK-ga, millega on palju lihtsam luua jälgimisskripte kui eBPF-ile pakutud C, Python ja Lua keelte ning väliste teekide kaudu töötades.
Oracle'i insenerid töötavad samuti eBPF-tagaside rajamise kallal GCC jaoks ja on juba avaldanud eBPF toe integreerimise jaoks GCC-s ja eBPF-i toe koodi integreerimise tugi GNU binutils. Algselt põhines eBPF-i toe backend tehnoloogiatel LLVM, kuid Oracle on huvitatud GCC-sse eBPF-i vahelise programmi genereerimise sündmuse lisamisest, mis võimaldab kasutada ühte tööriistakomplekti nii Linuxi kerneli kui ka eBPF-i programmide koostamiseks.
Lisaks bytecode genereerimise backendile sisaldavad GCC-le pakutavad plaastrid ka libgcc porti eBPF-ile ning ELF-failide genereerimise tööriistu, mis võimaldavad koodi käivitada eBPF-i virtuaalmasinas, kasutades tuuma pakutavaid laadijaid. Bytecode'iks saab hetkel tõlkida C-keeles kirjutatud koodi (kuid mitte kõik keele võimalused ei ole saadaval), kuid tulevikus oodatakse C-keele kasutusvõimaluste laienemist, teiste keelte toe lisamist, simulaatori loomist ja GCC toe lisamist eBPF-programmide silumisel ilma tuumas laadimata.
Allikas: opennet.ru
