Oracle om arbetet med att överföra DTrace-relaterade Àndringar till upstream och planerna för implementering av teknologin för dynamisk felsökning av DTrace ovanpÄ den befintliga infrastrukturen i Linux-kÀrnan, sÀrskilt med anvÀndning av sÄdana underprogram som eBPF. Ursprungligen var den största problematiken med att anvÀnda DTrace i Linux licenskompatibilitet, men Är 2018 licensierade Oracle DTrace-koden under GPLv2.
DTrace har redan erbjudits som en del av det utökade kÀrnan för Oracle Linux-distributionen, men för att anvÀnda den i andra distributioner krÀvs tillÀmpning av ytterligare kÀrnpatchar, vilket begrÀnsar anvÀndningen av den nÀmnda teknologin. Som exempel har Oracle en detaljerad instruktion för installation och anvÀndning av DTrace i Fedora Linux. För installationen krÀvs byggnad av och anvÀndning av en Linux-kÀrna, ombyggd med . För att automatisera byggprocessen av kÀrnan med Oracle- och Fedora-patchar föreslogs .
eBPF Àr en inbyggd bytekodstolk i Linux-kÀrnan som möjliggör skapande av nÀtverksoperationers hanterare, övervakning av systemets arbete, fÄngst av systemanrop, kontroll av Ätkomst, hantering av hÀndelser med tidsmÀtning (perf_event_open), berÀkning av frekvens och tidsÄtgÄng för operationer, samt spÄrning med hjÀlp av kprobes/uprobes/tracepoints. Tack vare tillÀmpningen av JIT-kompilering översÀtts bytekoden dynamiskt till maskininstruktioner och körs med prestanda liknande inbyggd kod. DTrace kan implementeras ovanpÄ eBPF, pÄ samma sÀtt som befintliga spÄrningsverktyg.
DTrace-teknologin utvecklades för operativsystemet Solaris för att lösa problem med dynamisk spÄrning av systemets kÀrna och slutliga applikationer, vilket ger anvÀndaren möjlighet att noggrant spÄra systemets beteende och diagnostisera problem i realtid. Vid felsökning pÄverkar DTrace inte prestandan hos de undersökta applikationerna och pÄverkar inte deras drift, vilket möjliggör analys av aktiva system i realtid. Bland DTrace:s styrkor mÀrks det hög nivÄsprÄket D, som liknar AWK, dÀr det Àr betydligt enklare att skapa spÄrningsskript Àn med de verktyg som erbjuds för eBPF för att skriva hanterare pÄ C, Python och Lua med externa bibliotek.
Ingenjörer frÄn Oracle arbetar ocksÄ med att skapa en eBPF-backend för GCC och har redan publicerat för att integrera stöd för eBPF i GCC och inkluderingen av kod för stöd för eBPF i GNU binutils. Ursprungligen baseras backenden för stöd för eBPF pÄ LLVM-teknologier, men Oracle Àr intresserade av att införa en inbyggd möjlighet i GCC för att generera program för eBPF, vilket skulle möjliggöra anvÀndning av ett enda verktyg för bÄde kompilering av Linux-kÀrnan och för att kompilera program för eBPF.
Förutom backenden för generering av bytekod inkluderar de patchar som föreslÄs för GCC Àven en port av libgcc för eBPF och verktyg för att skapa ELF-filer, vilket gör det möjligt att köra kod i den virtuella eBPF-maskinen med hjÀlp av kÀrnans tillhandahÄllande laddare. Just nu kan endast kod pÄ C översÀttas till bytekod (inte alla sprÄkets möjligheter Àr tillgÀngliga), men i framtiden förvÀntas en utvidgning av de tillgÀngliga funktionsmöjligheterna i C, stöd för andra sprÄk, skapande av en simulator och tillÀgg av stöd för GCC för felsökning av eBPF-program utan att ladda dem i kÀrnan.
KĂ€lla: opennet.ru
