Oracle inotarisira kugadzirisazve DTrace yeLinux uchishandisa eBPF

Oracle Company yakashuma nezve basa rekufambisa shanduko dzine chekuita neDDrace kuenda kumusoro uye zvirongwa zvekushandisa DTrace dynamic debugging tekinoroji pamusoro peiyo yakajairwa Linux kernel infrastructure, kureva kushandisa subsystems seBPF. Pakutanga, dambudziko guru rekushandisa DTrace paLinux raive risingaenderane padanho rerezinesi, asi muna 2018 Oracle. relicensed DTrace kodhi pasi peGPLv2.

DTrace kare nguva refu inopihwa sechikamu cheiyo kernel yakawedzera yekugovera Oracle Linux, asi kuti ishandiswe mune kumwe kugovera inoda kushandiswa kwekuwedzera kernel zvigamba, izvo zvinomisa kushandiswa kweiyi tekinoroji. Somuenzaniso, Oracle yakagadzirirwa yakadzama mirayiridzo yekuisa uye kushandisa DTrace paFedora Linux. Gungano rinodiwa pakuiswa zvishandiso uye kushandiswa kweLinux kernel yakavakwazve kubva zvigamba. Kuti uite otomatiki kuuraya kwe kernel chivakwa neOracle uye Fedora zvigamba, zvinokurudzirwa. script.

eBPF muturikiri webytecode akavakirwa muLinux kernel iyo inokutendera iwe kuti ugadzire network mashandiro ekubata, kutarisa sisitimu mashandiro, kubata nharembozha, kudzora kupinda, kuita zviitiko nekuchengetedza nguva (perf_event_open), kuverenga frequency uye execution nguva yekushanda, ita tracing uchishandisa kprobes. /uprobes /tracepoints. Nekuda kwekushandiswa kweJIT kuunganidza, bytecode inoshandurirwa panhunzi kuita mirairo yemuchina uye inoitwa nekuita kwekodhi yeko. DTrace inogona kuitwa pamusoro peBPF, yakafanana nemashandisirwo ainoitwa pamusoro peBPF Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ maturusi ekutsvaga aripo.

DTrace tekinoroji yakagadziridzwa yeSolaris inoshanda sisitimu kugadzirisa dambudziko rekutsvaga zvine simba system kernel uye kupedzisa maapplication, ichipa mushandisi kugona kuongorora maitiro ehurongwa zvakadzama uye kuongorora matambudziko munguva chaiyo. Munguva yekugadzirisa maitiro, DTrace haikanganisi kushanda kwezvikumbiro zviri pasi pekudzidza uye haina chero nzira ipi zvayo inokanganisa kushanda kwavo, izvo zvinokutendera kuti uronge kuongororwa kwemaitiro ekufambisa panhunzi. Imwe yesimba reDTrace ndiyo yepamusoro-level D mutauro, wakafanana neAWK, umo zviri nyore kwazvo kugadzira zvinyorwa zvekutevera pane kushandisa zvishandiso zvinopihwa pakunyora eBPF handlers muC, Python uye Lua nemaraibhurari ekunze.

Mainjiniya anobva kuOracle ari kushandawo kugadzira eBPF backend yeGCC uye akatoburitsa chigamba set kubatanidza eBPF rutsigiro muGCC uye kubudirira kusanganisira kodhi yekutsigira eBPF muGNU binutils. Pakutanga, iyo backend yeBPF rutsigiro yakavakirwa pahunyanzvi hweLLVM, asi Oracle inofarira kutaridzika muGCC yekugona kwakajairika kugadzira zvirongwa zveBPF, izvo zvinobvumira kushandiswa kwechishandiso chimwe chekuvaka iyo Linux kernel uye yekuvaka zvirongwa. zve eBPF.

Pamusoro peiyo bytecode chizvarwa backend, zvigamba zvakarongwa zveGCC zvakare zvinosanganisira libgcc chiteshi cheBPF uye maturusi ekugadzira mafaira eELF, zvichiita kuti zvikwanise kuita kodhi mumuchina weEBPF uchishandisa kernel-yakapihwa maloader. Parizvino, kodhi mumutauro weC inogona kushandurirwa mubytecode (kwete zvese zvemutauro zviripo), asi mune ramangwana zvinotarisirwa kuwedzera kugona kwemutauro C kunowanikwa kushandiswa, kuwedzera rutsigiro rwemimwe mitauro, kugadzira simulator, uye wedzera GCC rutsigiro rwekugadzirisa eBPF zvirongwa pasina kurodha mu kernel.

Source: opennet.ru

Voeg