Oracle kavatseb DTrace'i Linuxi jaoks eBPF-i abil ümber töötada

Oracle'i ettevõte teatatud DTrace'iga seotud muudatuste ülekandmisel ülesvoolu ja plaanidest rakendada DTrace'i dünaamilise silumise tehnoloogiat standardse Linuxi kerneli infrastruktuuri peal, kasutades nimelt selliseid alamsüsteeme nagu eBPF. Algselt oli Linuxis DTrace'i kasutamise peamine probleem litsentsitaseme ühildumatus, kuid 2018. aastal Oracle uuesti litsentsitud DTrace'i kood GPLv2 all.

DTrace juba kaua aega pakutakse Oracle Linuxi distributsiooni laiendatud kerneli osana, kuid selle kasutamiseks teistes distributsioonides on vaja täiendavaid tuumaparandusi, mis piirab selle tehnoloogia kasutamist. Näiteks Oracle ette valmistatud üksikasjalikud juhised DTrace'i installimiseks ja kasutamiseks Fedora Linuxis. Paigaldamiseks vajalik kokkupanek tööriistad aastast ümber ehitatud Linuxi tuuma kasutamine plaastrid. Tuuma loomise automatiseerimiseks Oracle'i ja Fedora plaastritega tehakse ettepanek stsenaarium.

eBPF on Linuxi kernelisse sisseehitatud baitkooditõlk, mis võimaldab luua võrguoperatsioonide töötlejaid, jälgida süsteemi toimimist, peatada süsteemikõnesid, juhtida juurdepääsu, töödelda sündmusi ajavõtuga (perf_event_open), lugeda operatsioonide sagedust ja täitmisaega, teostada jälgimist kprobesi abil. /uprobes /tracepoints. Tänu JIT-i kompileerimise kasutamisele tõlgitakse baitkood käigult masinakäskudeks ja täidetakse algkoodi jõudlusega. DTrace'i saab rakendada eBPF-i peale, sarnaselt sellele, kuidas seda rakendatakse eBPF-i peal töötavad olemasolevad jälgimisvahendid.

DTrace tehnoloogia töötati välja Solarise operatsioonisüsteemi jaoks, et lahendada süsteemi tuuma ja lõpprakenduste dünaamilise jälgimise probleem, andes kasutajale võimaluse jälgida üksikasjalikult süsteemi käitumist ja diagnoosida probleeme reaalajas. Silumisprotsessi ajal ei mõjuta DTrace uuritavate rakenduste tööd ega mõjuta kuidagi nende jõudlust, mis võimaldab töötavate süsteemide analüüsi käigu pealt korraldada. DTrace'i üheks tugevuseks on AWK-ga sarnane kõrgetasemeline D-keel, milles on palju lihtsam luua jälgimisskripte, kui kasutada C-s, Pythonis ja Lua-s eBPF-käsitlejate kirjutamiseks pakutavaid tööriistu koos väliste teekidega.

Oracle'i insenerid töötavad ka GCC jaoks eBPF-i taustaprogrammi loomise kallal ja on juba avaldanud plaastri komplekt integreerida eBPF-i tugi GCC-sse ja saavutatud sealhulgas kood eBPF-i toetamiseks GNU binutilsis. Algselt põhineb eBPF-i toe taustaprogramm LLVM-tehnoloogiatel, kuid Oracle on huvitatud, et GCC-s ilmuks standardne võimalus eBPF-i jaoks programme genereerida, mis võimaldab kasutada ühte tööriistakomplekti nii Linuxi tuuma kui ka programmide koostamiseks. eBPF jaoks.

Lisaks baitkoodi genereerimise taustaprogrammile sisaldavad GCC pakutavad paigad ka libgcc-porti eBPF-i jaoks ja tööriistu ELF-failide genereerimiseks, mis võimaldab eBPF-i virtuaalmasinas koodi käivitada, kasutades kerneli pakutavaid laadijaid. Praegu saab C-keeles koodi tõlkida baitkoodiks (kõik keelefunktsioonid pole saadaval), kuid tulevikus loodetakse laiendada C-keele kasutusvõimalusi, lisada tugi teistele keeltele, luua simulaator ja lisage GCC tugi eBPF-programmide silumiseks ilma kernelisse laadimata.

Allikas: opennet.ru

Lisa kommentaar