Ny GCC izao dia misy backend ho an'ny fanangonana amin'ny eBPF

Tafiditra ao amin'ny suite compiler GCC nolaniana code ho an'ny fanangonana programa ho an'ny mpandika teny bytecode natsangana tao amin'ny kernel Linux eGMP. Noho ny fampiasana ny JIT compilation, ny kernel bytecode dia adika amin'ny lalitra ho toromarika milina ary tanterahina miaraka amin'ny fanatanterahana ny kaody teratany. Patch miaraka amin'ny fanohanana eBPF nanaiky mankany amin'ny sampana izay namolavolana ny famoahana GCC 10.

Ho fanampin'ny backend ho an'ny famoronana bytecode, ny GCC dia misy seranan-tsambo libgcc ho an'ny eBPF sy fitaovana amin'ny famokarana rakitra ELF izay ahafahana manatanteraka ny kaody ao amin'ny milina virtoaly eBPF amin'ny alΓ lan'ny loader omen'ny kernel. Ny patch hanohanana ny eBPF ao amin'ny GCC dia nomanin'ny injeniera avy amin'ny Oracle, izay efa nanao izany NANOMEZAN'I Fanohanana eBPF amin'ny GNU binutils. Eo am-pamolavolana ihany koa ny simulator sy ny patch ho an'ny GDB, izay ahafahanao manala ny programa eBPF nefa tsy mampiditra azy ireo ao anaty kernel.

Ny programa ho an'ny eBPF dia azo faritana amin'ny ampahany amin'ny fiteny C, natambatra ary nampidirina tao anaty kernel. Alohan'ny famonoana, ny mpandika teny eBPF dia manamarina ny bytecode amin'ny fampiasana ny toromarika navela ary mametraka fitsipika sasantsasany amin'ny fehezan-dalΓ na (ohatra, tsy misy tadivavarana).
Tamin'ny voalohany, fitaovana mifototra amin'ny LLVM no nampiasaina mba hanangonana ny eBPF amin'ny Linux. Ny fanohanan'ny eBPF ao amin'ny GCC dia mahaliana satria mamela anao hampiasa fitaovana iray hananganana ny kernel Linux sy ny programa eBPF, tsy misy fametrahana fiankinan-doha fanampiny.

Amin'ny endrika programa eBPF, azonao atao ny mamorona mpandrindra ny fiasan'ny tambajotra, sivana ny fifamoivoizana, mitantana bandwidth, manara-maso ny rafitra, manakana ny antson'ny rafitra, mifehy ny fidirana, manisa ny matetika sy ny fotoana fiasana, ary manao trace amin'ny fampiasana kprobes/uprobes/tracepoints.

Source: opennet.ru

Add a comment