Kei te whakaaro a Oracle ki te hoahoa ano i te DTrace mo Linux ma te whakamahi i te eBPF

Kamupene Oracle ripoata mo te mahi ki te whakawhiti i nga huringa e pa ana ki te DTrace ki te whakarunga me te whakamahere ki te whakatinana i te hangarau patuiro hihiko a DTrace ki runga ake o te hanganga kernel Linux paerewa, ara te whakamahi i nga punaha iti penei i te eBPF. I te tuatahi, ko te raru nui ki te whakamahi i te DTrace i runga i te Linux ko te kore hototahi i te taumata raihana, engari i te tau 2018 Oracle kua raihanatia ano DTrace waehere i raro i te GPLv2.

DTrace kua wa roa ka tukuna hei waahanga o te kakano roa mo te tohatoha Oracle Linux, engari mo tana whakamahi i etahi atu tohatoha me whakamahi etahi taapiri kakano, e whakatiki ana i te whakamahinga o tenei hangarau. Hei tauira, Oracle kua rite nga tohutohu taipitopito mo te whakauru me te whakamahi i te DTrace ki Fedora Linux. Huihuinga e hiahiatia ana mo te whakaurunga taputapu me te whakamahi i te kernel Linux i hangaia mai i papaki. Hei whakaaunoa i te mahinga o te hanga kernel me nga papaa Oracle me Fedora, ka whakaarohia tuhinga.

Ko te eBPF he kaiwhakamaori bytecode i hangaia ki roto i te kakano Linux ka taea e koe te hanga i nga kaihautu mahi whatunga, te aro turuki i nga mahi a te punaha, te aukati i nga waea punaha, te mana whakahaere, te whakahaere i nga huihuinga me te waahi (perf_event_open), te tatau auau me te wa mahi o nga mahi, te mahi tirotiro ma te whakamahi kprobes /uprobes /tracepoints. He mihi ki te whakamahinga o te whakahiato JIT, ka whakamaoritia te bytecode i runga i te rere ki nga tohutohu miihini ka mahia me te mahi o te waehere taketake. Ka taea te whakatinana i te DTrace ki runga ake o te eBPF, he rite ki te ahua o te whakatinanatanga ki runga ake o te eBPF работают nga taputapu whai waahi.

I whakawhanakehia te hangarau DTrace mo te punaha whakahaere a Solaris ki te whakaoti i te raru o te tirotiro hihiri i te kakano o te punaha me nga tono mutunga, ka hoatu ki te kaiwhakamahi te kaha ki te aro turuki i nga whanonga punaha me te tirotiro i nga raru i roto i te waa. I te wa o te mahi patuiro, kaore a DTrace e pa ki nga mahi o nga tono e akohia ana, kaore hoki e pa ki a raatau mahi, ka taea e koe te whakarite i te tātaritanga o nga punaha whakahaere i runga i te rere. Ko tetahi o nga kaha o DTrace ko te reo D taumata-tiketike, he rite ki te AWK, he maamaa ake te hanga tuhinga whaiwhai i te whakamahi i nga taputapu e tukuna ana mo te tuhi i nga kaikawe eBPF ki C, Python me Lua me nga whare pukapuka o waho.

Kei te mahi ano hoki nga miihini mai i Oracle ki te hanga i te tuara eBPF mo te GCC kua oti te whakaputa huinga papaki ki te whakauru i te tautoko eBPF ki te GCC me te kua tutuki tae atu ki te waehere hei tautoko i te eBPF i nga binutils GNU. I te timatanga, ko te tuara mo te tautoko eBPF kei runga i nga hangarau LLVM, engari kei te pirangi a Oracle ki te ahua o te GCC o te kaha paerewa ki te whakaputa kaupapa mo te eBPF, ka taea te whakamahi i tetahi kete taputapu mo te hanga i te kernel Linux me te hanga kaupapa. mo eBPF.

I tua atu i te tuara o te reanga bytecode, kei roto ano hoki i nga papaki mo te GCC he tauranga libgcc mo te eBPF me nga taputapu mo te whakaputa i nga konae ELF, na reira ka taea te mahi waehere i roto i te miihini mariko eBPF ma te whakamahi i nga kaieke-karo. I tenei wa, ka taea te whakamaori i te waehere i roto i te reo C ki te bytecode (kaore nga ahuatanga reo katoa e waatea ana), engari i nga wa kei te heke mai ko te tumanako ka whakawhānuihia nga kaha reo C e waatea ana mo te whakamahi, te taapiri tautoko mo etahi atu reo, te hanga simulator, me taapirihia te tautoko GCC mo te patuiro i nga kaupapa eBPF me te kore e utaina ki te pata.

Source: opennet.ru

Tāpiri i te kōrero