Oracle planlægger at redesigne DTrace til Linux ved hjælp af eBPF

Oracle Corporation i sin officielle blog og deler relevante diagrammer. 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 koden til DTrace under GPLv2.

DTrace har allerede længe været 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 has prepared en detaljeret vejledning til installation og brug af DTrace i Fedora Linux. For installation kræves en bygning værktøjer og anvendelse af en Linux-kerne, der er genopbygget med patcher. For at automatisere byggingen af kernen med Oracle- og Fedora-patches foreslås der script.

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. arbejder 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 et sæt patches til integration af eBPF-support i GCC og har opnået 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

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster