GCC tam sim no suav nrog lub backend rau muab tso ua ke rau eBPF

Muaj nyob rau hauv GCC compiler suite lees txais code rau compiling cov kev pab cuam rau tus neeg txhais lus bytecode ua rau hauv Linux kernel eBPF ua. Ua tsaug rau kev siv JIT muab tso ua ke, kernel bytecode tau txhais ntawm ya mus rau hauv cov lus qhia tshuab thiab ua tiav nrog kev ua haujlwm ntawm cov cai ib txwm muaj. Patches nrog eBPF kev txhawb nqa txais mus rau ceg uas GCC 10 tso tawm yog tsim.

Ntxiv rau qhov backend rau bytecode tiam, GCC suav nrog qhov chaw nres nkoj libgcc rau eBPF thiab cov cuab yeej tsim cov ntaub ntawv ELF uas ua rau nws muaj peev xwm ua tiav cov lej hauv eBPF lub tshuab virtual siv cov khoom siv kernel. Patches los txhawb eBPF hauv GCC tau npaj los ntawm engineers los ntawm Oracle, uas twb muaj lawm muab eBPF kev txhawb nqa hauv GNU binutils. Lub simulator thiab thaj ua rau thaj rau GDB kuj tseem nyob rau hauv txoj kev loj hlob, uas yuav tso cai rau koj mus debug eBPF cov kev pab cuam yam tsis tau thauj lawv mus rau hauv lub ntsiav.

Cov kev pab cuam rau eBPF tuaj yeem txhais tau rau hauv ib pawg ntawm C hom lus, muab tso ua ke thiab thauj mus rau hauv cov ntsiav. Ua ntej ua tiav, tus neeg txhais lus eBPF xyuas cov bytecode rau kev siv cov lus qhia tso cai thiab ua rau qee cov cai ntawm cov cai (piv txwv li, tsis muaj loops).
Thaum xub thawj, LLVM-raws li cov cuab yeej siv los sau eBPF ntawm Linux. eBPF kev txhawb nqa hauv GCC yog qhov nthuav vim nws tso cai rau koj siv ib lub cuab yeej los tsim cov Linux ntsiav thiab eBPF cov kev pab cuam, yam tsis muaj kev txhim kho ntxiv.

Nyob rau hauv daim ntawv ntawm eBPF cov kev pab cuam, koj muaj peev xwm tsim network ua hauj lwm handlers, lim tsheb, tswj bandwidth, saib xyuas systems, intercept system hu, tswj kev nkag, suav cov zaus thiab lub sij hawm ntawm kev khiav hauj lwm, thiab ua tracing siv kprobes/uprobes/tracepoints.

Tau qhov twg los: opennet.ru

Ntxiv ib saib