Oracle ընկերությունը
DTrace արդեն
eBPF-ը Linux-ի միջուկում ներկառուցված բայթկոդի թարգմանիչ է, որը թույլ է տալիս ստեղծել ցանցային գործառնությունների մշակիչներ, վերահսկել համակարգի աշխատանքը, ընդհատել համակարգային զանգերը, վերահսկել մուտքը, մշակել իրադարձությունները ժամանակաչափով (perf_event_open), հաշվելու հաճախականությունը և գործառնությունների կատարման ժամանակը, կատարել հետագծում kprobes-ի միջոցով: /հետազոտումներ /հետքի կետեր. JIT կոմպիլյացիայի օգտագործման շնորհիվ բայթկոդը անմիջապես թարգմանվում է մեքենայական հրահանգների և կատարվում է հայրենի կոդի կատարմամբ: DTrace-ը կարող է իրականացվել eBPF-ի վերևում, ինչպես այն իրականացվում է eBPF-ի վրա
DTrace տեխնոլոգիան մշակվել է Solaris օպերացիոն համակարգի համար՝ լուծելու համակարգի միջուկի և վերջնական հավելվածների դինամիկ հետևելու խնդիրը՝ օգտվողին հնարավորություն տալով մանրամասնորեն վերահսկել համակարգի վարքագիծը և իրական ժամանակում ախտորոշել խնդիրները: Վրիպազերծման գործընթացում DTrace-ը չի ազդում ուսումնասիրվող հավելվածների աշխատանքի վրա և ոչ մի կերպ չի ազդում դրանց կատարման վրա, ինչը թույլ է տալիս կազմակերպել գործարկվող համակարգերի վերլուծությունը թռիչքի ժամանակ: DTrace-ի ուժեղ կողմերից մեկը բարձր մակարդակի D լեզուն է, որը նման է AWK-ին, որտեղ շատ ավելի հեշտ է ստեղծել հետագծման սկրիպտներ, քան օգտագործել այն գործիքները, որոնք առաջարկվում են C, Python և Lua-ում արտաքին գրադարաններով գրելու համար eBPF մշակիչներ:
Oracle-ի ինժեներները նույնպես աշխատում են GCC-ի համար eBPF backend ստեղծելու վրա և արդեն հրապարակել են
Ի լրումն բայթկոդերի ստեղծման հետնամասի, GCC-ի համար առաջարկվող patches-ը ներառում է նաև libgcc միացք eBPF-ի համար և գործիքներ ELF ֆայլեր ստեղծելու համար, ինչը հնարավորություն է տալիս eBPF վիրտուալ մեքենայում կոդը կատարել միջուկով տրամադրվող բեռնիչներով: Առայժմ C լեզվով ծածկագիրը կարող է թարգմանվել բայթկոդի (ոչ բոլոր լեզվական հնարավորություններն են հասանելի), սակայն ապագայում ակնկալվում է ընդլայնել C լեզվի հնարավորությունները, որոնք հասանելի են օգտագործման համար, ավելացնել աջակցություն այլ լեզուների համար, ստեղծել սիմուլյատոր և ավելացնել GCC աջակցություն eBPF ծրագրերի վրիպազերծման համար՝ առանց միջուկի մեջ բեռնելու:
Source: opennet.ru