Oracle na-ezube imegharị DTrace maka Linux site na iji eBPF

Ụlọ ọrụ Oracle kọrọ banyere ọrụ na ịnyefe mgbanwe ndị metụtara DTrace na elu na atụmatụ iji mejuputa DTrace dynamic debugging technology n'elu ọkọlọtọ Linux kernel akụrụngwa, ya bụ iji subsystems dị ka eBPF. Na mbido, isi nsogbu na iji DTrace na Linux bụ enweghị ndakọrịta na ọkwa ikike, mana na 2018 Oracle. enwetara ikike Koodu DTrace n'okpuru GPLv2.

DTrace ugbua Otee aka A na-enye ya dịka akụkụ nke kernel agbatịkwuru maka nkesa Oracle Linux, mana maka iji ya na nkesa ndị ọzọ, ọ chọrọ iji patches kernel ọzọ, nke na-egbochi iji teknụzụ a. Dịka ọmụmaatụ, Oracle kwadebere ntuziaka zuru ezu maka ịwụnye na iji DTrace na Fedora Linux. Mgbakọ chọrọ maka nrụnye ngwá ọrụ na iji Linux kernel wughachiri site na patches. Iji mebie ogbugbu nke ụlọ kernel na Oracle na Fedora patches, a tụrụ aro ya. edemede.

eBPF bụ onye ntụgharị okwu bytecode arụnyere n'ime kernel Linux nke na-enye gị ohere ịmepụta ndị na-ahụ maka ọrụ netwọkụ, nyochaa ọrụ sistemụ, igbochi oku sistemụ, ohere njikwa, usoro ihe omume na idebe oge (perf_event_open), gụọ ugboro na igbu oge nke arụmọrụ, jiri kprobes rụọ ọrụ. /uprobes /tracepoints. N'ihi iji mkpokọta JIT, a na-asụgharị bytecode ka ọ na-efegharị n'ime ntuziaka igwe wee jiri arụ ọrụ nke koodu obodo gbuo ya. Enwere ike itinye DTrace n'elu eBPF, dịka esi etinye ya n'elu eBPF .аботают ngwaọrụ nchọta dị adị.

Emepụtara teknụzụ DTrace maka sistemụ arụmọrụ Solaris iji dozie nsogbu nke ịchọpụta kernel sistemu na ngwa njedebe, na-enye onye ọrụ ikike inyocha omume sistemụ n'ụzọ zuru ezu ma chọpụta nsogbu ozugbo. N'oge usoro nbipu, DTrace adịghị emetụta ọrụ nke ngwa ndị a na-amụ ma ọ dịghị emetụta ọrụ ha n'ụzọ ọ bụla, nke na-enye gị ohere ịhazi nyocha nke usoro ịgba ọsọ na ofufe. Otu n'ime ike nke DTrace bụ asụsụ D dị elu, dịka AWK, nke ọ na-adị mfe ịmepụta script tracing karịa iji ngwá ọrụ enyere maka ide eBPF handlers na C, Python na Lua nwere ụlọ akwụkwọ ndị dị na mpụga.

Ndị injinia sitere na Oracle na-arụkwa ọrụ n'ịmepụta nkwado eBPF maka GCC ma ebipụtalarị ya nhazi ihe nkedo ijikọ nkwado eBPF n'ime GCC na enwetara gụnyere koodu iji kwado eBPF na GNU binutils. Na mbu, nkwado nkwado eBPF dabere na teknụzụ LLVM, mana Oracle nwere mmasị n'ọdịdị GCC nke ikike ọkọlọtọ imepụta mmemme maka eBPF, nke ga-enye ohere iji otu ngwa ma maka iwulite kernel Linux yana maka iwulite mmemme. maka eBPF.

Na mgbakwunye na azụ azụ nke bytecode, patches ndị a chọrọ maka GCC gụnyekwara ọdụ ụgbọ mmiri libgcc maka eBPF yana ngwaọrụ maka imepụta faịlụ ELF, na-eme ka o kwe omume ịme koodu na igwe mebere eBPF site na iji kernel nyere loaders. Maka ugbu a, koodu dị n'asụsụ C nwere ike ịtụgharị gaa na bytecode (ọ bụghị njirimara asụsụ niile dị), mana n'ọdịnihu, a na-atụ anya ịgbasa ike asụsụ C dị maka ojiji, tinye nkwado maka asụsụ ndị ọzọ, mepụta simulator, na tinye nkwado GCC maka imezi mmemme eBPF na-ebunyeghị n'ime kernel.

isi: opennet.ru

Tinye a comment