GCC dabar turi užpakalinę programą, skirtą kompiliavimui į eBPF

Įtraukta į GCC kompiliatoriaus rinkinį priimta kodas, skirtas programoms kompiliuoti baitinių kodų interpretatoriui, integruotam į Linux branduolį eGMP. Naudojant JIT kompiliavimą, branduolio baitų kodas iš karto verčiamas į mašinos instrukcijas ir vykdomas naudojant vietinį kodą. Pataisymai su eBPF palaikymu priimtas į šaką, iš kurios kuriamas GCC 10 leidimas.

Be baitinio kodo generavimo užpakalinės programos, GCC apima libgcc prievadą, skirtą eBPF, ir ELF failų generavimo įrankius, kurie leidžia vykdyti kodą eBPF virtualioje mašinoje naudojant branduolio teikiamas įkroviklius. Pataisas, skirtas palaikyti eBPF GCC, parengė Oracle inžinieriai, kurie jau turėjo jeigu eBPF palaikymas GNU binutils. Taip pat kuriamas treniruoklis ir pataisymai, skirti GDB, kurie leis derinti eBPF programas neįkeliant jų į branduolį.

eBPF programas galima apibrėžti C kalbos poaibyje, sukompiliuoti ir įkelti į branduolį. Prieš vykdydamas eBPF vertėjas patikrina baitų kodą, ar nėra leistinų instrukcijų, ir nustato tam tikras kodui taisykles (pavyzdžiui, nėra ciklų).
Iš pradžių eBPF kompiliavimui Linux sistemoje buvo naudojami LLVM pagrįsti įrankiai. eBPF palaikymas GCC yra įdomus, nes leidžia naudoti vieną įrankių rinkinį Linux branduoliui ir eBPF programoms kurti, neįdiegiant papildomų priklausomybių.

eBPF programų pavidalu galite kurti tinklo operacijų tvarkykles, filtruoti srautą, valdyti pralaidumą, stebėti sistemas, perimti sistemos skambučius, kontroliuoti prieigą, skaičiuoti operacijų dažnumą ir laiką bei atlikti sekimą naudojant kprobes/uprobes/tracepoints.

Šaltinis: opennet.ru

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