Oracle plāno pārveidot DTrace operētājsistēmai Linux, izmantojot eBPF

Uzņēmums Oracle ziņots par darbu pie DTrace saistītu izmaiņu pārnešanas uz augšupplūsmu un plāniem ieviest DTrace dinamiskās atkļūdošanas tehnoloģiju papildus standarta Linux kodola infrastruktūrai, proti, izmantojot apakšsistēmas, piemēram, eBPF. Sākotnēji galvenā problēma, izmantojot DTrace operētājsistēmā Linux, bija nesaderība licences līmenī, bet 2018. gadā Oracle relicencēta DTrace kods saskaņā ar GPLv2.

DTrace jau ilgu laiku tiek piedāvāts kā daļa no paplašinātā kodola Oracle Linux izplatīšanai, taču tā izmantošanai citos izplatījumos ir jāizmanto papildu kodola ielāpi, kas ierobežo šīs tehnoloģijas izmantošanu. Piemēram, Oracle sagatavots detalizēti norādījumi par DTrace instalēšanu un lietošanu operētājsistēmā Fedora Linux. Uzstādīšanai nepieciešama montāža instrumenti un Linux kodola izmantošana, kas pārbūvēta no ielāpus. Tiek piedāvāts automatizēt kodola veidošanas izpildi, izmantojot Oracle un Fedora ielāpus skripts.

eBPF ir Linux kodolā iebūvēts baitkoda tulks, kas ļauj izveidot tīkla operāciju apdarinātājus, pārraudzīt sistēmas darbību, pārtvert sistēmas zvanus, kontrolēt piekļuvi, apstrādāt notikumus ar laika uzskaiti (perf_event_open), skaitīt operāciju biežumu un izpildes laiku, veikt izsekošanu, izmantojot kprobes. /uprobes /tracepoints. Pateicoties JIT kompilācijas izmantošanai, baitkods tiek nekavējoties pārtulkots mašīnas instrukcijās un izpildīts ar vietējā koda veiktspēju. DTrace var ieviest virs eBPF, līdzīgi kā tas tiek ieviests virs eBPF strādā esošos izsekošanas rīkus.

DTrace tehnoloģija tika izstrādāta operētājsistēmai Solaris, lai atrisinātu sistēmas kodola un gala lietojumprogrammu dinamiskas izsekošanas problēmu, sniedzot lietotājam iespēju detalizēti uzraudzīt sistēmas uzvedību un diagnosticēt problēmas reāllaikā. Atkļūdošanas procesa laikā DTrace neietekmē pētāmo lietojumprogrammu darbību un nekādā veidā neietekmē to veiktspēju, kas ļauj organizēt darbojošos sistēmu analīzi lidojuma laikā. Viena no DTrace stiprajām pusēm ir augsta līmeņa D valoda, līdzīga AWK, kurā ir daudz vieglāk izveidot izsekošanas skriptus, nekā izmantojot piedāvātos rīkus eBPF apstrādātāju rakstīšanai C, Python un Lua valodās ar ārējām bibliotēkām.

Oracle inženieri arī strādā pie eBPF aizmugursistēmas izveides GCC un jau ir publicējuši ielāpu komplekts integrēt eBPF atbalstu GCC un sasniegts ieskaitot kodu eBPF atbalstam GNU binutils. Sākotnēji eBPF atbalsta aizmugure ir balstīta uz LLVM tehnoloģijām, bet Oracle ir ieinteresēts, lai GCC parādītos standarta iespēja ģenerēt programmas eBPF, kas ļaus izmantot vienu rīku komplektu gan Linux kodola, gan programmu veidošanai. par eBPF.

Papildus baitkoda ģenerēšanas aizmugursistēmai piedāvātajos GCC ielāpus ir iekļauts arī libgcc ports eBPF un ELF failu ģenerēšanas rīki, kas ļauj izpildīt kodu eBPF virtuālajā mašīnā, izmantojot kodola nodrošinātos ielādes. Pagaidām kodu C valodā var tulkot baitkodā (nav pieejamas visas valodu iespējas), taču nākotnē paredzēts paplašināt lietošanai pieejamās C valodas iespējas, pievienot atbalstu citām valodām, izveidot simulatoru un pievienot GCC atbalstu eBPF programmu atkļūdošanai, neielādējot tās kodolā.

Avots: opennet.ru

Pievieno komentāru