Oracle Corporation om arbejdet med at overføre relaterede ændringer til DTrace til upstream og planerne for implementering af teknologien til dynamisk fejlfinding af DTrace oven på den eksisterende infrastruktur i Linux-kernen, specifikt ved brug af subsystemer som eBPF. Oprindeligt var det største problem ved brugen af DTrace i Linux inkompatibilitet på licensniveau, men i 2018 relicensierede Oracle under GPLv2.
DTrace har allerede tilgængelig som en del af det udvidede kernel for Oracle Linux-distributionen, men det kræver yderligere patches til kernen for at blive brugt i andre distributioner, hvilket begrænser anvendelsen af den nævnte teknologi. Som eksempel har Oracle en detaljeret vejledning til installation og brug af DTrace i Fedora Linux. For installation kræves en bygning og anvendelse af en Linux-kerne, der er genopbygget med . For at automatisere byggingen af kernen med Oracle- og Fedora-patches foreslås der .
eBPF er en indbygget bytecode-tolker i Linux-kernen, der gør det muligt at oprette håndteringsfunktioner til netværksoperationer, overvåge systemets drift, opfange systemopkald, kontrollere adgang, behandle hændelser med tidsmåling (perf_event_open), tælle frekvenser og udføre operationer i henhold til tidsforbruget, udføre sporing ved hjælp af kprobes/uprobes/tracepoints. Takket være brugen af JIT-kompilering bliver bytekoden oversat til maskininstruktioner on-the-fly og udført med ydeevne som native kode. DTrace kan implementeres oven på eBPF, ligesom de eksisterende sporingsværktøjer. DTrace-teknologien blev udviklet til operativsystemet Solaris for at løse opgaver til dynamisk sporing af systemkernen og slutprogrammer, og giver brugeren mulighed for at spore systemets adfærd detaljeret og udføre realtidsdiagnostik af problemer. Under fejlfinding påvirker DTrace ikke driften af de undersøgende applikationer og har ingen indflydelse på deres ydeevne, hvilket muliggør analyse af kørende systemer i realtid. DTrace's styrker inkluderer et højniveau D-sprog, der ligner AWK, hvilket gør det betydeligt lettere at skabe sporingsskemaer sammenlignet med de foreslåede værktøjer til eBPF til at skrive håndteringsprogrammer i sprog som C, Python og Lua med eksterne biblioteker.
Технология DTrace была разработана для операционной системы Solaris для решения задач по динамической трассировке ядра системы и конечных приложений, давая пользователю возможность детально отслеживать поведение системы и в режиме реального времени производить диагностику проблем. В процессе отладки DTrace не влияет на работу исследуемых приложений и никак не отражается на их производительности, что позволяет организовать анализ работающих систем на лету. Из сильных сторон DTrace отмечается высокоуровневый язык D, похожий на AWK, на котором значительно проще создавать сценарии трассировки, чем при применении предлагаемых для eBPF средств написания обработчиков на языках C, Python и Lua с внешними библиотеками.
Ingeniører fra Oracle arbejder også på at skabe eBPF-backend til GCC og har allerede offentliggjort til integration af eBPF-support i GCC og inkluderingen af kode til understøttelse af eBPF i GNU binutils. Oprindeligt er backend til understøttelse af eBPF baseret på LLVM-teknologier, men Oracle er interesseret i at bringe en integreret mulighed for at generere programmer til eBPF i GCC, hvilket vil muliggøre brugen af et enkelt værktøj til både at kompilere Linux-kernen og programmer til eBPF.
Ud over backend til generation af bytekode inkluderer de foreslåede patches til GCC også en port af libgcc til eBPF og værktøjer til at danne ELF-filer, som giver mulighed for at køre koden i eBPF's virtuelle maskine ved hjælp af de loader, der leveres af kernen. Indtil videre kan kode i C (ikke alle funktioner i sproget er tilgængelige) blive oversat til bytekode, men i fremtiden forventes det, at mulighederne for C-sproget vil blive udvidet, yderligere sprog vil blive understøttet, der vil blive oprettet en simulator, og GCC vil få support til at debugge eBPF-programmer uden at skulle indlæse dem i kernen.
Kilde: opennet.ru
