Inkampani ye-Oracle
I-DTrace vele
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
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
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