Oracle npaj siab rov ua haujlwm DTrace rau Linux siv eBPF

Oracle tuam txhab qhia hais txog kev ua hauj lwm ntawm kev hloov DTrace-hais txog kev hloov pauv mus rau sab sauv thiab npaj siv DTrace dynamic debugging thev naus laus zis nyob rau sab saum toj ntawm tus qauv Linux kernel infrastructure, uas yog siv cov subsystems xws li eBPF. Thaum pib, qhov teeb meem tseem ceeb ntawm kev siv DTrace ntawm Linux yog qhov tsis sib xws ntawm qib ntawv tso cai, tab sis xyoo 2018 Oracle tso tseg DTrace code nyob rau hauv GPLv2.

DTrace xa ntev yog muab los ua ib feem ntawm cov ntsiav txuas ntxiv rau Oracle Linux faib, tab sis rau nws siv hauv lwm qhov kev faib tawm nws yuav tsum tau siv cov ntsiav tshuaj ntxiv, uas txwv tsis pub siv cov thev naus laus zis no. Piv txwv li, Oracle npaj cov lus qhia ntxaws rau kev txhim kho thiab siv DTrace ntawm Fedora Linux. Kev sib dhos xav tau rau kev teeb tsa cuab yeej thiab siv lub Linux kernel rebuilt los ntawm thaj ua rau thaj. Txhawm rau ua kom tiav qhov kev ua tiav ntawm lub tsev ntsiav nrog Oracle thiab Fedora thaj ua rau thaj, nws tau thov tsab ntawv.

eBPF yog tus neeg txhais lus bytecode ua rau hauv Linux ntsiav uas tso cai rau koj los tsim cov neeg ua haujlwm hauv network, saib xyuas cov haujlwm ua haujlwm, cuam tshuam kev hu xov tooj, tswj kev nkag mus, txheej txheem txheej txheem nrog sijhawm ua haujlwm (perf_event_open), suav zaus thiab sijhawm ua haujlwm ntawm kev ua haujlwm, ua tracing siv kprobes /uprobes /tracepoints. Ua tsaug rau kev siv JIT muab tso ua ke, 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. DTrace tuaj yeem siv rau sab saum toj ntawm eBPF, zoo ib yam li nws tau siv rau saum eBPF Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ cov cuab yeej tracing uas twb muaj lawm.

DTrace thev naus laus zis tau tsim los rau Solaris operating system los daws qhov teeb meem ntawm kev tshawb nrhiav qhov system kernel thiab kawg daim ntawv thov, muab cov neeg siv lub peev xwm los saib xyuas cov kev coj ua hauv kev nthuav dav thiab kuaj cov teeb meem hauv lub sijhawm. Thaum lub sij hawm debugging txheej txheem, DTrace tsis cuam tshuam rau kev khiav hauj lwm ntawm daim ntawv thov nyob rau hauv kev kawm thiab tsis nyob rau hauv ib txoj kev cuam tshuam rau lawv cov kev ua tau zoo, uas tso cai rau koj los npaj cov kev soj ntsuam ntawm khiav systems ntawm ya. Ib qho ntawm qhov muaj zog ntawm DTrace yog qib siab D hom lus, zoo ib yam li AWK, uas nws yooj yim dua los tsim cov ntawv tracing dua li siv cov cuab yeej muab rau kev sau eBPF handlers hauv C, Python thiab Lua nrog cov tsev qiv ntawv sab nraud.

Cov kws tshaj lij los ntawm Oracle tseem tab tom ua haujlwm tsim ib qho eBPF backend rau GCC thiab tau tshaj tawm thaj set los muab kev txhawb nqa eBPF rau hauv GCC thiab ua tiav suav nrog cov lej los txhawb eBPF hauv GNU binutils. Thaum pib, lub backend rau eBPF kev txhawb nqa yog raws li LLVM technologies, tab sis Oracle txaus siab rau qhov tshwm sim hauv GCC ntawm tus qauv muaj peev xwm los tsim cov kev pab cuam rau eBPF, uas yuav tso cai rau siv ib lub cuab yeej rau tsim lub Linux kernel thiab tsim cov kev pab cuam. rau eBPF.

Ntxiv rau cov bytecode tiam backend, cov lus thov thaj ua rau thaj rau GCC kuj suav nrog libgcc chaw nres nkoj rau eBPF thiab cov cuab yeej tsim cov ntaub ntawv ELF, ua rau nws muaj peev xwm ua tiav cov lej hauv eBPF lub tshuab virtual siv cov khoom siv kernel. Txog tam sim no, cov lej hauv C tuaj yeem muab txhais ua bytecode (tsis yog txhua hom lus muaj), tab sis yav tom ntej nws yuav tsum nthuav dav C hom lus muaj peev xwm siv tau, ntxiv kev txhawb nqa rau lwm yam lus, tsim lub simulator, thiab ntxiv GCC kev txhawb nqa rau kev debugging eBPF cov kev pab cuam yam tsis muaj kev thauj khoom rau hauv cov ntsiav.

Tau qhov twg los: opennet.ru

Ntxiv ib saib