Oracle har til hensikt å redesigne DTrace for Linux ved å bruke eBPF

Oracle Company rapporterte om arbeid med å overføre DTrace-relaterte endringer til oppstrøms og planer om å implementere DTrace dynamisk debugging-teknologi på toppen av standard Linux-kjerneinfrastruktur, nemlig ved å bruke undersystemer som eBPF. Opprinnelig var hovedproblemet med å bruke DTrace på Linux inkompatibilitet på lisensnivå, men i 2018 Oracle relisensiert DTrace-kode under GPLv2.

DTrace allerede lang tid tilbys som en del av en utvidet kjerne for Oracle Linux-distribusjonen, men for bruk i andre distribusjoner krever det bruk av ekstra kjernepatcher, noe som begrenser bruken av denne teknologien. Som et eksempel, Oracle forberedt detaljerte instruksjoner for installasjon og bruk av DTrace på Fedora Linux. Montering nødvendig for installasjon verktøy og bruk av en Linux-kjerne gjenoppbygd fra lapper. For å automatisere utførelsen av kjernebygging med Oracle- og Fedora-oppdateringer, foreslås det manus.

eBPF er en bytekode-tolk innebygd i Linux-kjernen som lar deg lage nettverksoperasjonsbehandlere, overvåke systemdrift, avskjære systemanrop, kontrollere tilgang, behandle hendelser med tidtaking (perf_event_open), tellefrekvens og utførelsestid for operasjoner, utføre sporing ved hjelp av kprobes /uprobes /sporingspunkter. Takket være bruken av JIT-kompilering, blir bytekode oversatt til maskininstruksjoner og utført med ytelsen til opprinnelig kode. DTrace kan implementeres på toppen av eBPF, på samme måte som det er implementert på toppen av eBPF jobber eksisterende sporingsverktøy.

DTrace-teknologi ble utviklet for Solaris-operativsystemet for å løse problemet med dynamisk sporing av systemkjernen og sluttapplikasjoner, noe som gir brukeren muligheten til å overvåke systematferd i detalj og diagnostisere problemer i sanntid. Under feilsøkingsprosessen påvirker ikke DTrace driften av applikasjonene som studeres og påvirker ikke på noen måte ytelsen deres, noe som lar deg organisere analysen av kjørende systemer i farten. En av styrkene til DTrace er D-språket på høyt nivå, i likhet med AWK, der det er mye enklere å lage sporingsskript enn å bruke verktøyene som tilbys for å skrive eBPF-behandlere i C, Python og Lua med eksterne biblioteker.

Ingeniører fra Oracle jobber også med å lage en eBPF-backend for GCC og har allerede publisert lappesett å integrere eBPF-støtte i GCC og oppnådd inkludert kode for å støtte eBPF i GNU-binutils. Til å begynne med er backend for eBPF-støtte basert på LLVM-teknologier, men Oracle er interessert i utseendet i GCC av en standard evne til å generere programmer for eBPF, som vil tillate bruk av ett verktøysett både for å bygge Linux-kjernen og for å bygge programmer for eBPF.

I tillegg til bytekodegenereringsbackend, inkluderer de foreslåtte oppdateringene for GCC også en libgcc-port for eBPF og verktøy for å generere ELF-filer, noe som gjør det mulig å kjøre kode i den virtuelle eBPF-maskinen ved hjelp av kjerneleverte lastere. Foreløpig kan kode på C-språket oversettes til bytekode (ikke alle språkfunksjoner er tilgjengelige), men i fremtiden forventes det å utvide C-språkfunksjonene som er tilgjengelige for bruk, legge til støtte for andre språk, lage en simulator og legg til GCC-støtte for feilsøking av eBPF-programmer uten å laste inn i kjernen.

Kilde: opennet.ru

Legg til en kommentar