Oracle inakusudia kuunda upya DTrace ya Linux kwa kutumia eBPF

Kampuni ya Oracle iliripotiwa kuhusu kazi ya kuhamisha mabadiliko yanayohusiana na DTrace hadi juu na inapanga kutekeleza teknolojia ya utatuzi ya DTrace juu ya miundombinu ya kawaida ya Linux kernel, yaani kutumia mifumo ndogo kama vile eBPF. Hapo awali, shida kuu ya kutumia DTrace kwenye Linux ilikuwa kutolingana katika kiwango cha leseni, lakini mnamo 2018 Oracle. iliyopewa leseni Msimbo wa DTrace chini ya GPLv2.

DTrace tayari muda mrefu inatolewa kama sehemu ya kernel iliyopanuliwa kwa usambazaji wa Oracle Linux, lakini kwa matumizi yake katika usambazaji mwingine inahitaji matumizi ya vipande vya ziada vya kernel, ambayo hupunguza matumizi ya teknolojia hii. Kwa mfano, Oracle tayari maagizo ya kina ya kusanikisha na kutumia DTrace kwenye Fedora Linux. Mkutano unahitajika kwa ufungaji zana na utumiaji wa kernel ya Linux iliyojengwa upya kutoka mabaka. Ili kuharakisha utekelezaji wa jengo la kernel na viraka vya Oracle na Fedora, inapendekezwa. hati.

eBPF ni mkalimani wa bytecode iliyojengwa ndani ya kinu cha Linux ambacho hukuruhusu kuunda vidhibiti vya utendakazi wa mtandao, kufuatilia utendakazi wa mfumo, kunasa simu za mfumo, kudhibiti ufikiaji, kuchakata matukio kwa kuweka muda (perf_event_open), kuhesabu marudio na wakati wa utekelezaji wa shughuli, kutekeleza ufuatiliaji kwa kutumia kprobes. /uprobes /tracepoints. Shukrani kwa matumizi ya mkusanyiko wa JIT, bytecode inatafsiriwa kwa kuruka kwenye maagizo ya mashine na kutekelezwa kwa utendakazi wa msimbo asilia. DTrace inaweza kutekelezwa juu ya eBPF, sawa na jinsi inavyotekelezwa juu ya eBPF Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ zana zilizopo za kufuatilia.

Teknolojia ya DTrace ilitengenezwa kwa ajili ya mfumo wa uendeshaji wa Solaris ili kutatua tatizo la kufuatilia kwa nguvu kernel ya mfumo na kumalizia programu, kumpa mtumiaji uwezo wa kufuatilia tabia ya mfumo kwa undani na kutambua matatizo kwa wakati halisi. Wakati wa mchakato wa kurekebisha, DTrace haiathiri uendeshaji wa maombi chini ya utafiti na haiathiri kwa namna yoyote utendaji wao, ambayo inakuwezesha kuandaa uchambuzi wa mifumo inayoendesha kwa kuruka. Mojawapo ya nguvu za DTrace ni lugha ya kiwango cha juu cha D, sawa na AWK, ambayo ni rahisi zaidi kuunda hati za ufuatiliaji kuliko kutumia zana zinazotolewa kwa kuandika vishughulikiaji vya eBPF katika C, Python na Lua na maktaba za nje.

Wahandisi kutoka Oracle pia wanafanya kazi kuunda hali ya nyuma ya eBPF kwa GCC na tayari wamechapisha seti ya kiraka kuunganisha usaidizi wa eBPF katika GCC na kufikiwa ikijumuisha msimbo wa kusaidia eBPF katika GNU binutils. Hapo awali, msingi wa usaidizi wa eBPF unategemea teknolojia za LLVM, lakini Oracle inavutiwa na kuonekana katika GCC ya uwezo wa kawaida wa kutengeneza programu za eBPF, ambayo itaruhusu utumiaji wa zana moja ya kuunda kernel ya Linux na kwa programu za ujenzi. kwa eBPF.

Kwa kuongeza mazingira ya nyuma ya uzalishaji wa bytecode, viraka vilivyopendekezwa vya GCC pia ni pamoja na lango la libgcc la eBPF na zana za kutengeneza faili za ELF, kuwezesha kutekeleza msimbo katika mashine pepe ya eBPF kwa kutumia vipakiaji vilivyotolewa na kernel. Kwa sasa, msimbo katika lugha C unaweza kutafsiriwa katika bytecode (si vipengele vyote vya lugha vinavyopatikana), lakini katika siku zijazo inatarajiwa kupanua uwezo wa lugha C unaopatikana kwa matumizi, kuongeza usaidizi kwa lugha zingine, kuunda kiigaji, na ongeza usaidizi wa GCC kwa utatuzi wa programu za eBPF bila kupakia kwenye kernel.

Chanzo: opennet.ru

Kuongeza maoni