I-Oracle ihlose ukuphinda isebenze kabusha i-DTrace ye-Linux isebenzisa i-eBPF

Inkampani ye-Oracle kubikiwe mayelana nomsebenzi wokudlulisa izinguquko ezihlobene ne-DTrace ukuya phezulu futhi uhlela ukusebenzisa ubuchwepheshe bokulungisa iphutha be-DTrace phezu kwengqalasizinda evamile ye-Linux kernel, okungukuthi ukusebenzisa amasistimu angaphansi afana ne-eBPF. Ekuqaleni, inkinga enkulu ngokusebenzisa i-DTrace ku-Linux yayingahambelani ezingeni lelayisense, kodwa ngo-2018 Oracle ilayisense Ikhodi ye-DTrace ngaphansi kwe-GPLv2.

I-DTrace vele isikhathi eside inikezwa njengengxenye ye-kernel enwetshiwe yokusatshalaliswa kwe-Oracle Linux, kodwa ukuze isetshenziswe kokunye ukusatshalaliswa kudinga ukusetshenziswa kwama-patches e-kernel engeziwe, okukhawulela ukusetshenziswa kwalobu buchwepheshe. Ngokwesibonelo, Oracle ilungisiwe imiyalelo enemininingwane yokufaka nokusebenzisa i-DTrace ku-Fedora Linux. Kudingeka ukuhlanganisa ukuze kufakwe amathuluzi kanye nokusetshenziswa kwe-Linux kernel eyakhiwe kabusha kusuka amapheshana. Ukwenza ngokuzenzakalelayo ukwenziwa kwesakhiwo se-kernel ngeziqephu ze-Oracle ne-Fedora, kuhlongozwa umbhalo.

I-eBPF iyitolika ye-bytecode eyakhelwe ku-Linux kernel ekuvumela ukuthi udale izibambi zokusebenza kwenethiwekhi, uqaphe umsebenzi wesistimu, ubambe amakholi wesistimu, ulawule ukufinyelela, ucubungule imicimbi ngokugcinwa kwesikhathi (perf_event_open), ubale imvamisa nesikhathi sokusebenza, wenze ukulandelela usebenzisa ama-kprobes. /uprobes /tracepoints. Ngenxa yokusetshenziswa kokuhlanganiswa kwe-JIT, i-bytecode ihunyushwa ngokuphazima kweso ukuya emiyalweni yomshini futhi isetshenziswe ngokusebenza kwekhodi yomdabu. I-DTrace ingasetshenziswa phezu kwe-eBPF, efana nendlela esetshenziswa ngayo phezu kwe-eBPF sebenza amathuluzi okulandelela akhona.

Ubuchwepheshe be-DTrace benzelwe uhlelo lokusebenza lwe-Solaris ukuxazulula inkinga yokulandelela ngamandla i-kernel yesistimu nokuqeda izinhlelo zokusebenza, ukunikeza umsebenzisi ikhono lokuqapha ukuziphatha kwesistimu ngokuningiliziwe nokuxilonga izinkinga ngesikhathi sangempela. Phakathi nenqubo yokulungisa iphutha, i-DTrace ayithinti ukusebenza kwezinhlelo zokusebenza ezisacwaningwayo futhi ayithinti nganoma iyiphi indlela ukusebenza kwazo, okukuvumela ukuthi uhlele ukuhlaziya amasistimu asebenzayo ngokundiza. Enye yamandla e-DTrace wulimi lwezinga eliphezulu le-D, elifana ne-AWK, lapho kulula kakhulu ukudala izikripthi zokulandelela kunokusebenzisa amathuluzi anikezwa ukubhala iziphathi ze-eBPF ku-C, i-Python ne-Lua ngemitapo yolwazi yangaphandle.

Onjiniyela abavela e-Oracle nabo basebenzela ukwakha i-eBPF backend ye-GCC futhi sebevele bashicilele isethi yesichibi ukuhlanganisa ukwesekwa kwe-eBPF ku-GCC kanye okuzuziwe kufaka phakathi ikhodi yokusekela i-eBPF kuma-GNU binutils. Ekuqaleni, i-backend yokusekelwa kwe-eBPF isekelwe kubuchwepheshe be-LLVM, kodwa i-Oracle inesithakazelo ekubonakaleni kwe-GCC yekhono elijwayelekile lokukhiqiza izinhlelo ze-eBPF, ezizovumela ukusetshenziswa kwekhithi yamathuluzi eyodwa kokubili ukwakha i-Linux kernel kanye nezinhlelo zokwakha. kwe eBPF.

Ngokungeziwe ku-backend yokukhiqiza i-bytecode, ama-patches ahlongozwayo e-GCC ahlanganisa nembobo ye-libgcc ye-eBPF namathuluzi okukhiqiza amafayela e-ELF, okwenza kube nokwenzeka ukukhipha ikhodi emshinini we-eBPF obonakalayo usebenzisa izilayishi ezinikezwe i-kernel. Okwamanje, ikhodi yolimi C ingahunyushelwa ku-bytecode (akuzona zonke izici zolimi ezitholakalayo), kodwa esikhathini esizayo kulindeleke ukuthi kunwetshwe amakhono olimi C atholakalayo ukuze asetshenziswe, kwengeze ukusekela kwezinye izilimi, ukudala isifanisi, futhi engeza ukusekelwa kwe-GCC kokulungisa iphutha kwezinhlelo ze-eBPF ngaphandle kokulayisha ku-kernel.

Source: opennet.ru

Engeza amazwana