Compania Oracle
DTrace deja
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
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
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