Compania Oracle despre lucrările de transmitere a modificărilor legate de DTrace în upstream și planurile pentru implementarea tehnologiei de depanare dinamică DTrace peste infrastructura de bază a nucleului Linux, și anume utilizând subsisteme cum ar fi eBPF. Inițial, principala problemă cu utilizarea DTrace în Linux a fost incompatibilitatea la nivel de licență, dar în 2018, compania Oracle codul DTrace sub GPLv2.
DTrace este încă din pachetul extins al nucleului pentru distribuția Oracle Linux, dar pentru utilizarea sa în alte distribuții necesită aplicarea unor patchuri pentru nucleu, ceea ce limitează utilizarea tehnologiei menționate. Ca exemplu, compania Oracle o instrucțiune detaliată despre instalarea și utilizarea DTrace în Fedora Linux. Pentru instalare, este necesară compilarea și aplicarea nucleului Linux, recompilat cu . Pentru automatizarea procesului de compilare a nucleului cu patchurile Oracle și Fedora, a fost propus un .
eBPF reprezintă un interpret de bytecode încorporat în nucleul Linux, care permite crearea de manipulatoare pentru operațiuni de rețea, urmărirea funcționării sistemelor, interceptarea apelurilor de sistem, controlul accesului, gestionarea evenimentelor cu cronometrare (perf_event_open), numărarea frecvenței și timpului de execuție al operațiunilor, realizarea de trasări folosind kprobes/uprobes/tracepoints. Datorită utilizării compilării JIT, bytecode-ul este tradus în instrucțiuni mașină în timp real și executat cu performanță similară codului nativ. DTrace poate fi implementat peste eBPF, analog cu modul în care peste eBPF există unelte de trasare.
Tehnologia DTrace a fost dezvoltată pentru sistemul de operare Solaris pentru a rezolva sarcini de urmărire dinamică a nucleului sistemului și a aplicațiilor finale, oferind utilizatorului posibilitatea de a urmări detaliat comportamentul sistemului și de a diagnostica problemele în timp real. În procesul de depanare, DTrace nu afectează funcționarea aplicațiilor examinate și nu are niciun impact asupra performanței lor, ceea ce permite organizarea analizei sistemelor active în timp real. Printre avantajele DTrace se numără limbajul de înalt nivel D, asemănător cu AWK, care face mult mai ușoară crearea de scripturi de urmărire decât utilizarea instrumentelor propuse pentru eBPF pentru scrierea gestionatorilor în limbajele C, Python și Lua cu biblioteci externe.
Inginerii de la Oracle lucrează de asemenea la crearea unui backend eBPF pentru GCC și au publicat deja pentru integrarea suportului eBPF în GCC și să includă codul pentru suportul eBPF în GNU binutils. Inițial, backend-ul pentru suportul eBPF se bazează pe tehnologiile LLVM, dar compania Oracle este interesată de apariția unei capacități native în GCC de generare a programelor pentru eBPF, ceea ce va permite utilizarea unui singur instrumentar atât pentru compilarea nucleului Linux, cât și pentru compilarea programelor pentru eBPF.
Pe lângă backend-ul pentru generarea de bytecode, patch-urile propuse pentru GCC includ de asemenea portarea libgcc pentru eBPF și instrumente pentru formarea fișierelor ELF, care permit executarea codului într-o mașină virtuală eBPF folosind încărcătoarele furnizate de nucleu. Până acum, codul în limbajul C poate fi transformat în bytecode (nu toate funcționalitățile limbajului sunt disponibile), dar în viitor se așteaptă extinderea capabilităților disponibile ale limbajului C, adăugarea suportului pentru alte limbaje, crearea unui simulator și adăugarea suportului GCC pentru depanarea programelor eBPF fără a fi încărcate în nucleu.
Sursa: opennet.ro
