Oracle intenționează să refacă DTrace pentru Linux folosind eBPF

Compania Oracle а raportat despre munca privind transferul modificărilor legate de DTrace în amonte și intenționează să implementeze tehnologia de depanare dinamică DTrace pe deasupra infrastructurii standard de kernel Linux, și anume folosind subsisteme precum eBPF. Inițial, principala problemă cu utilizarea DTrace pe Linux a fost incompatibilitatea la nivel de licență, dar în 2018 Oracle relicențiat Codul DTrace sub GPLv2.

DTrace deja perioadă lungă de timp este oferit ca parte a unui nucleu extins pentru distribuția Oracle Linux, dar pentru utilizarea sa în alte distribuții necesită utilizarea unor corecții suplimentare de kernel, ceea ce limitează utilizarea acestei tehnologii. De exemplu, Oracle pregătit instrucțiuni detaliate pentru instalarea și utilizarea DTrace pe Fedora Linux. Asamblare necesară pentru instalare unelte și utilizarea unui nucleu Linux reconstruit din petice. Pentru a automatiza execuția construirii kernel-ului cu patch-uri Oracle și Fedora, se propune scenariu.

eBPF este un interpret de cod de octeți încorporat în kernel-ul Linux care vă permite să creați manere de operare în rețea, să monitorizați funcționarea sistemului, să interceptați apelurile de sistem, să controlați accesul, să procesați evenimente cu cronometrare (perf_event_open), să numărați frecvența și timpul de execuție al operațiunilor, să efectuați urmărirea folosind kprobes /uprobes /tracepoints. Datorită utilizării compilației JIT, bytecode este tradus din mers în instrucțiuni de mașină și executat cu performanța codului nativ. DTrace poate fi implementat peste eBPF, similar modului în care este implementat peste eBPF sunt de lucru instrumentele de urmărire existente.

Tehnologia DTrace a fost dezvoltată pentru sistemul de operare Solaris pentru a rezolva problema urmăririi dinamice a nucleului sistemului și a aplicațiilor finale, oferind utilizatorului posibilitatea de a monitoriza comportamentul sistemului în detaliu și de a diagnostica problemele în timp real. În timpul procesului de depanare, DTrace nu afectează funcționarea aplicațiilor studiate și nu afectează în niciun fel performanța acestora, ceea ce vă permite să organizați analiza sistemelor care rulează din mers. Unul dintre punctele forte ale DTrace este limbajul D de nivel înalt, similar cu AWK, în care este mult mai ușor să creați scripturi de urmărire decât utilizarea instrumentelor oferite pentru scrierea handlerelor eBPF în 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 set de plasturi să integreze suportul eBPF în GCC și realizat inclusiv cod pentru a suporta eBPF în GNU binutils. Inițial, backend-ul pentru suportul eBPF se bazează pe tehnologii LLVM, dar Oracle este interesat de apariția în GCC a unei abilități standard de a genera programe pentru eBPF, care va permite utilizarea unui singur set de instrumente atât pentru construirea nucleului Linux, cât și pentru construirea de programe. pentru eBPF.

Pe lângă backend-ul de generare de bytecode, patch-urile propuse pentru GCC includ, de asemenea, un port libgcc pentru eBPF și instrumente pentru generarea fișierelor ELF, făcând posibilă executarea codului în mașina virtuală eBPF folosind încărcătoare furnizate de kernel. Deocamdată, codul în limbajul C poate fi tradus în bytecode (nu sunt disponibile toate caracteristicile limbii), dar în viitor este de așteptat să extindă capacitățile limbajului C disponibile pentru utilizare, să adauge suport pentru alte limbi, să creeze un simulator și adăugați suport GCC pentru depanarea programelor eBPF fără încărcare în nucleu.

Sursa: opennet.ru

Adauga un comentariu