GCC zdaj vključuje zaledje za prevajanje v eBPF

Vključeno v zbirko prevajalnikov GCC sprejet koda za prevajanje programov za tolmač bajtne kode, vgrajen v jedro Linuxa eGMP. Zahvaljujoč uporabi prevajanja JIT se bajtna koda jedra sproti prevaja v strojna navodila in izvaja z zmogljivostjo izvorne kode. Popravki s podporo za eBPF sprejeto v vejo, iz katere je bila razvita izdaja GCC 10.

Poleg ozadja za generiranje bajtne kode GCC vključuje vrata libgcc za eBPF in orodja za generiranje datotek ELF, ki omogočajo izvajanje kode v virtualnem stroju eBPF z uporabo nalagalnikov, ki jih zagotavlja jedro. Popravke za podporo eBPF v GCC so pripravili inženirji podjetja Oracle, ki so že pod pogojem Podpora eBPF v GNU binutils. V razvoju so tudi simulator in popravki za GDB, ki vam bodo omogočili odpravljanje napak v programih eBPF, ne da bi jih naložili v jedro.

Programe za eBPF je mogoče definirati v podnaboru jezika C, jih prevesti in naložiti v jedro. Pred izvajanjem tolmač eBPF preveri bajtno kodo za uporabo dovoljenih navodil in kodi naloži določena pravila (na primer brez zank).
Sprva so bila za prevajanje eBPF v Linuxu uporabljena orodja, ki temeljijo na LLVM. Podpora za eBPF v GCC je zanimiva, ker vam omogoča uporabo enega kompleta orodij za gradnjo jedra Linuxa in programov eBPF brez nameščanja dodatnih odvisnosti.

V obliki programov eBPF lahko ustvarite upravljalnike omrežnih operacij, filtrirate promet, upravljate pasovno širino, nadzirate sisteme, prestrežete sistemske klice, nadzorujete dostop, štejete pogostost in čas operacij ter izvajate sledenje z uporabo kprobes/uprobes/tracepoints.

Vir: opennet.ru

Dodaj komentar