„Oracle“ ketina perdaryti „DTrace“, skirtą „Linux“, naudodama eBPF

Oracle kompanija pranešė apie darbą perkeliant su DTrace susijusius pakeitimus į ankstesnę srovę ir planus įdiegti DTrace dinaminio derinimo technologiją standartinėje Linux branduolio infrastruktūroje, būtent naudojant posistemes, tokias kaip eBPF. Iš pradžių pagrindinė problema naudojant „DTrace“ sistemoje „Linux“ buvo licencijos lygio nesuderinamumas, tačiau „Oracle“ 2018 m. relicencijuota DTrace kodas pagal GPLv2.

DTrace jau ilgas laikas siūloma kaip išplėstinio branduolio dalis, skirta „Oracle Linux“ platinimui, tačiau reikia papildomų branduolio pataisų, skirtų naudoti kituose platinimuose, o tai riboja šios technologijos naudojimą. Pavyzdžiui, „Oracle“. paruoštas išsamias DTrace diegimo ir naudojimo Fedora Linux instrukcijas. Montavimui reikalingas surinkimas įrankiai ir naudojant Linux branduolį, perkurtą iš pleistrai. Siūloma automatizuoti branduolio surinkimo vykdymą naudojant Oracle ir Fedora pataisas scenarijus.

eBPF yra baitinio kodo interpretatorius, įmontuotas Linux branduolyje, leidžiantis kurti tinklo operacijų tvarkykles, stebėti sistemos veiklą, perimti sistemos skambučius, kontroliuoti prieigą, apdoroti įvykius išsaugant laiką (perf_event_open), apskaičiuoti operacijų dažnumą ir laiką, sekti. naudojant kprobes / uprobes / tracepoints. Naudojant JIT kompiliavimą, baitinis kodas yra verčiamas į mašinos instrukcijas ir vykdomas naudojant vietinį kodą. DTrace galima įdiegti ant eBPF, panašiai kaip ant eBPF dirba esamas sekimo priemones.

„DTrace“ technologija buvo sukurta „Solaris“ operacinei sistemai, kad išspręstų sistemos branduolio ir galutinių programų dinaminio sekimo problemas, suteikiant vartotojui galimybę detaliai stebėti sistemos elgseną ir diagnozuoti problemas realiuoju laiku. Derinimo metu DTrace neturi įtakos tiriamų programų veikimui ir niekaip neįtakoja jų veikimo, o tai leidžia organizuoti veikiančių sistemų analizę skrydžio metu. Iš DTrace stipriųjų pusių pažymima aukšto lygio D kalba, panaši į AWK, kurioje daug lengviau rašyti sekimo scenarijus nei naudojant eBPF C, Python ir Lua programoms siūlomus rašymo įrankius su išorinėmis bibliotekomis. .

„Oracle“ inžinieriai taip pat dirba kurdami eBPF užpakalinę sistemą GCC ir jau paskelbė pleistrų rinkinys integruoti eBPF palaikymą į GCC ir pasiekti įskaitant kodą eBPF palaikymui GNU binutils. Iš pradžių eBPF palaikymo užpakalinė programa yra pagrįsta LLVM technologijomis, tačiau „Oracle“ yra suinteresuota, kad GCC atsirastų įprasta galimybė generuoti eBPF programas, kurios leis naudoti vieną įrankių rinkinį tiek „Linux“ branduoliui, tiek programoms eBPF. .

Be užpakalinės programos, skirtos generuoti baitinį kodą, GCC siūlomos pataisos taip pat apima libgcc prievadą, skirtą eBPF, ir ELF failų generavimo įrankius, leidžiančius vykdyti kodą eBPF virtualioje mašinoje naudojant branduolio teikiamas įkroviklius. Kol kas C kodą galima išversti į baitinį kodą (ne visos kalbos funkcijos yra prieinamos), tačiau ateityje tikimasi išplėsti C kalbos funkcijas, papildyti kitų kalbų palaikymą, sukurti simuliatorių ir pridėti GCC palaikymą. eBPF programų derinimui neįkeliant į branduolį.

Šaltinis: opennet.ru

Добавить комментарий