Kampuni ya Oracle
DTrace tayari
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
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
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