Oracle har för avsikt att designa om DTrace för Linux med eBPF

Oracle Company rapporterad om arbetet med att överföra DTrace-relaterade förändringar till uppströms och planer på att implementera DTrace dynamisk felsökningsteknik ovanpå den vanliga Linux-kärninfrastrukturen, nämligen att använda delsystem som eBPF. Inledningsvis var det största problemet med att använda DTrace på Linux licensnivåinkompatibilitet, men 2018 Oracle återlicensierad DTrace-kod under GPLv2.

DTrace redan länge sedan erbjuds som en del av den utökade kärnan för Oracle Linux-distributionen, men kräver ytterligare kärnpatchar för användning i andra distributioner, vilket begränsar användningen av denna teknik. Som ett exempel, Oracle beredd detaljerade instruktioner för att installera och använda DTrace på Fedora Linux. Montering krävs för installation verktyg och använder en Linux-kärna ombyggd från plåster. För att automatisera exekveringen av kärnsammansättningen med Oracle och Fedora-korrigeringar, föreslås det manus.

eBPF är en bytekodtolkare inbyggd i Linux-kärnan som låter dig skapa nätverkshanterare, övervaka systemaktivitet, avlyssna systemanrop, kontrollera åtkomst, bearbeta händelser med bevarande av timing (perf_event_open), beräkna frekvens och tid för operationer, utföra spårning använder kprobes / uprobes /tracepoints. Tack vare användningen av JIT-kompilering översätts bytekod till maskininstruktioner i farten och exekveras med prestanda av inbyggd kod. DTrace kan implementeras ovanpå eBPF, liknande hur det är ovanpå eBPF работают befintliga spårningsverktyg.

DTrace-teknologin utvecklades för operativsystemet Solaris för att lösa problem med dynamisk spårning av systemkärnan och slutapplikationer, vilket ger användaren möjlighet att övervaka systemets beteende i detalj och diagnostisera problem i realtid. Under felsökning påverkar inte DTrace driften av de studerade applikationerna och påverkar inte deras prestanda på något sätt, vilket gör det möjligt att organisera analysen av körande system i farten. Av styrkorna med DTrace noteras ett D-språk på hög nivå, liknande AWK, där det är mycket lättare att skriva spårningsskript än när man använder verktygen för skrivhanterare som erbjuds för eBPF i C, Python och Lua med externa bibliotek .

Oracles ingenjörer arbetar också med att bygga en eBPF-backend för GCC och har redan publicerat lapp set att integrera eBPF-stöd i GCC och uppnåtts inklusive kod för att stödja eBPF i GNU-binutils. Inledningsvis är backend för eBPF-stöd baserat på LLVM-teknologier, men Oracle är intresserade av att GCC ser den vanliga förmågan att generera program för eBPF, vilket gör det möjligt att använda en verktygslåda för både att bygga Linux-kärnan och bygga program för eBPF.

Förutom backend för att generera bytekod, inkluderar patcharna som föreslagits för GCC även en port av libgcc för eBPF och verktyg för att generera ELF-filer, vilket gör det möjligt att exekvera kod i den virtuella eBPF-maskinen med hjälp av kärnanförsedda laddare. För närvarande kan C-kod översättas till bytekod (inte alla språkfunktioner är tillgängliga), men i framtiden förväntas det utöka C-språkfunktionerna som är tillgängliga för användning, lägga till stöd för andra språk, skapa en simulator och lägga till GCC-stöd för att felsöka eBPF-program utan att ladda in i kärnan.

Källa: opennet.ru

Lägg en kommentar