Spoločnosť Oracle o práci na prenosu zmien súvisiacich s DTrace do upstream a plánoch na implementáciu technológie dynamického ladenia DTrace nad štandardnou infraštruktúrou jadra Linux, konkrétne s využitím takých subsystémov ako eBPF. Pôvodne bola hlavnou prekážkou pre použitie DTrace v Linuxe nekompatibilita na úrovni licencií, ale v roku 2018 spoločnosť Oracle kód DTrace pod GPLv2.
DTrace už je dostupný ako súčasť rozšíreného jadra pre distribúciu Oracle Linux, ale na jeho použitie v iných distribúciách si vyžaduje aplikáciu ďalších opravných súborov pre jadro, čo obmedzuje použitie tejto technológie. Ako príklad spoločnosť Oracle poskytla podrobný návod na inštaláciu a používanie DTrace vo Fedore Linux. Na inštaláciu je potrebné zloženie a použitie jadra Linux, prekompilovaného s . Na automatizáciu vykonávania zostavovania jadra s opravnými súbormi Oracle a Fedora bol navrhnutý .
eBPF je zabudovaný do jadra Linux interpretátor bajtkódu, ktorý umožňuje vytvárať spracovateľa sieťových operácií, sledovať chod systémov, zachytávať systémové volania, kontrolovať prístup, spracovávať udalosti so zachovaním časových údajov (perf_event_open), počítať frekvenciu a dobu vykonávania operácií, vykonávať trasovanie pomocou kprobes/uprobes/tracepoints. Vďaka použitiu JIT kompilácie sa bajtkód za behu prekladá do strojových inštrukcií a vykonáva sa s výkonom natívneho kódu. DTrace môže byť implementovaný nad eBPF, podobne ako existujúce nástroje trasovania. существующие инструменты трассировки.
Technológia DTrace bola vyvinutá pre operačný systém Solaris na riešenie úloh dynamického trasovania jadra systému a konečných aplikácií, čo používateľovi umožňuje podrobne sledovať správanie systému a v reálnom čase diagnostikovať problémy. Počas ladenia DTrace neovplyvňuje činnosť skúmaných aplikácií a nijako neovplyvňuje ich výkon, čo umožňuje analyzovať fungujúce systémy v reálnom čase. Medzi silné stránky DTrace patrí vysokoúrovňový jazyk D, podobný AWK, v ktorom je podstatne jednoduchšie vytvárať skripty trasovania ako pri používaní odporúčaných prostriedkov na eBPF na písanie spracovateľov v jazykoch C, Python a Lua s externými knižnicami.
Inžinieri z Oracle tiež pracujú na vytvorení eBPF backendu pre GCC a už publikovali na integráciu podpory eBPF do GCC a začlenenia kódu na podporu eBPF do GNU binutils. Pôvodne sa backend pre podporu eBPF zakladá na technológiach LLVM, ale spoločnosť Oracle má záujem o vznik vstavaných schopností generácie programov pre eBPF v GCC, čo umožní použiť jeden nástroj na zostavenie jadra Linuxu aj na zostavenie programov pre eBPF.
Okrem backendu na generáciu bajtkódu navrhnuté opravy pre GCC tiež zahŕňajú port libgcc pre eBPF a prostriedky na formovanie ELF súborov, ktoré umožňujú vykonať kód vo virtuálnom stroji eBPF s využitím bootloaderov poskytovaných jadrom. V bajtkóde môže zatiaľ byť translovaný kód v jazyku C (nie všetky funkcie jazyka sú dostupné), ale v budúcnosti sa očakáva rozšírenie možností jazyka C, pridanie podpory pre iné jazyky, vytvorenie simulátora a pridanie podpory GCC na ladenie eBPF programov bez načítania do jadra.
Zdroj: opennet.ru
