L-Oracle biħsiebu jfassal mill-ġdid DTrace għal Linux billi juża eBPF

Kumpanija Oracle irrappurtat dwar ix-xogħol fuq it-trasferiment ta' bidliet relatati ma' DTrace għal upstream u pjanijiet biex tiġi implimentata t-teknoloġija tad-debugging dinamiku DTrace fuq l-infrastruttura standard tal-kernel Linux, jiġifieri l-użu ta' sottosistemi bħal eBPF. Inizjalment, il-problema ewlenija bl-użu ta 'DTrace fuq Linux kienet l-inkompatibbiltà fil-livell tal-liċenzja, iżda fl-2018 Oracle liċenzjat mill-ġdid Kodiċi DTrace taħt GPLv2.

DTrace diġà żmien twil huwa offrut bħala parti minn kernel estiż għad-distribuzzjoni Oracle Linux, iżda għall-użu tiegħu f'distribuzzjonijiet oħra jeħtieġ l-użu ta 'garża kernel addizzjonali, li jillimita l-użu ta' din it-teknoloġija. Bħala eżempju, Oracle ippreparat struzzjonijiet dettaljati għall-installazzjoni u l-użu ta’ DTrace fuq Fedora Linux. Assemblaġġ meħtieġ għall-installazzjoni għodod u l-użu ta 'kernel Linux mibni mill-ġdid irqajja. Biex tiġi awtomatizzata l-eżekuzzjoni tal-bini tal-kernel b'irqajja Oracle u Fedora, huwa propost iskrittura.

eBPF huwa interpretu tal-bytecode mibni fil-kernel tal-Linux li jippermettilek li toħloq handlers tal-operat tan-netwerk, timmonitorja l-operat tas-sistema, tinterċetta sejħiet tas-sistema, tikkontrolla l-aċċess, tipproċessa avvenimenti b'timekeeping (perf_event_open), tgħodd il-frekwenza u l-ħin tal-eżekuzzjoni tal-operazzjonijiet, twettaq traċċar bl-użu ta 'kprobes /uprobes /tracepoints. Grazzi għall-użu tal-kumpilazzjoni JIT, bytecode jiġi tradott fuq il-fly f'struzzjonijiet tal-magni u esegwit bil-prestazzjoni tal-kodiċi nattiv. DTrace jista' jiġi implimentat fuq l-eBPF, simili għal kif huwa implimentat fuq l-eBPF работают għodod eżistenti ta’ traċċar.

It-teknoloġija DTrace ġiet żviluppata għas-sistema operattiva Solaris biex issolvi l-problema tat-traċċar dinamiku tal-qalba tas-sistema u l-applikazzjonijiet finali, li tagħti lill-utent il-kapaċità li jimmonitorja l-imġieba tas-sistema fid-dettall u jiddijanjostika l-problemi f'ħin reali. Matul il-proċess ta 'debugging, DTrace ma jaffettwax l-operat ta' l-applikazzjonijiet li qed jiġu studjati u bl-ebda mod ma jaffettwa l-prestazzjoni tagħhom, li jippermettilek torganizza l-analiżi ta 'sistemi ta' tħaddim fuq il-fly. Waħda mill-punti b'saħħithom ta 'DTrace hija l-lingwa D ta' livell għoli, simili għal AWK, li fiha huwa ħafna aktar faċli li toħloq skripts ta 'traċċar milli tuża l-għodod offruti għall-kitba ta' handlers eBPF f'C, Python u Lua ma 'libreriji esterni.

Inġiniera minn Oracle qed jaħdmu wkoll fuq il-ħolqien ta 'backend eBPF għal GCC u diġà ppubblikaw sett tal-garża biex jintegra l-appoġġ tal-eBPF fil-GCC u miksub inkluż kodiċi biex jappoġġja eBPF fil-binutils GNU. Inizjalment, il-backend għall-appoġġ ta 'eBPF huwa bbażat fuq teknoloġiji LLVM, iżda Oracle huwa interessat fid-dehra fil-GCC ta' kapaċità standard li tiġġenera programmi għal eBPF, li se tippermetti l-użu ta 'għodda waħda kemm għall-bini tal-kernel Linux kif ukoll għall-bini ta' programmi. għall-eBPF.

Minbarra l-backend tal-ġenerazzjoni tal-bytecode, l-irqajja proposti għall-GCC jinkludu wkoll port libgcc għal eBPF u għodod għall-ġenerazzjoni ta 'fajls ELF, li jagħmluha possibbli li tesegwixxi kodiċi fil-magna virtwali eBPF bl-użu ta' loaders ipprovduti mill-kernel. Għalissa, il-kodiċi fil-lingwa C jista 'jiġi tradott f'bytecode (mhux il-karatteristiċi tal-lingwa kollha huma disponibbli), iżda fil-futur huwa mistenni li jespandi l-kapaċitajiet tal-lingwa C disponibbli għall-użu, iżid appoġġ għal lingwi oħra, joħloq simulatur, u żid l-appoġġ tal-GCC għad-debugging tal-programmi eBPF mingħajr tagħbija fil-kernel.

Sors: opennet.ru

Żid kumment