Oracle-ը մտադիր է վերամշակել DTrace-ը Linux-ի համար՝ օգտագործելով eBPF

Oracle ընկերությունը հաղորդում է The Guardian- ը DTrace-ի հետ կապված փոփոխությունները վերին հոսանք տեղափոխելու աշխատանքի մասին և պլանավորում է ներդնել DTrace դինամիկ կարգաբերման տեխնոլոգիան ստանդարտ Linux միջուկի ենթակառուցվածքի վերևում, մասնավորապես՝ օգտագործելով ենթահամակարգեր, ինչպիսին է eBPF-ն: Սկզբում Linux-ում DTrace-ի օգտագործման հիմնական խնդիրը լիցենզիայի մակարդակում անհամատեղելիությունն էր, սակայն Oracle-ը 2018 թ. վերալիցենզավորված DTrace կոդը GPLv2-ի տակ:

DTrace արդեն երկար ժամանակ առաջարկվում է որպես ընդլայնված միջուկի մաս Oracle Linux բաշխման համար, սակայն այլ բաշխումներում դրա օգտագործման համար պահանջվում է միջուկի հավելյալ պատչերի օգտագործում, ինչը սահմանափակում է այս տեխնոլոգիայի օգտագործումը: Որպես օրինակ՝ Oracle պատրաստված Fedora Linux-ում DTrace-ի տեղադրման և օգտագործման մանրամասն հրահանգներ: Տեղադրման համար պահանջվում է հավաքում գործիքներ և վերակառուցված Linux միջուկի օգտագործումը կարկատաններ. Oracle-ի և Fedora-ի patches-ով միջուկային շենքի կատարումն ավտոմատացնելու համար առաջարկվում է. սցենար.

eBPF-ը Linux-ի միջուկում ներկառուցված բայթկոդի թարգմանիչ է, որը թույլ է տալիս ստեղծել ցանցային գործառնությունների մշակիչներ, վերահսկել համակարգի աշխատանքը, ընդհատել համակարգային զանգերը, վերահսկել մուտքը, մշակել իրադարձությունները ժամանակաչափով (perf_event_open), հաշվելու հաճախականությունը և գործառնությունների կատարման ժամանակը, կատարել հետագծում kprobes-ի միջոցով: /հետազոտումներ /հետքի կետեր. JIT կոմպիլյացիայի օգտագործման շնորհիվ բայթկոդը անմիջապես թարգմանվում է մեքենայական հրահանգների և կատարվում է հայրենի կոդի կատարմամբ: DTrace-ը կարող է իրականացվել eBPF-ի վերևում, ինչպես այն իրականացվում է eBPF-ի վրա աշխատանքют առկա հետագծման գործիքներ:

DTrace տեխնոլոգիան մշակվել է Solaris օպերացիոն համակարգի համար՝ լուծելու համակարգի միջուկի և վերջնական հավելվածների դինամիկ հետևելու խնդիրը՝ օգտվողին հնարավորություն տալով մանրամասնորեն վերահսկել համակարգի վարքագիծը և իրական ժամանակում ախտորոշել խնդիրները: Վրիպազերծման գործընթացում DTrace-ը չի ազդում ուսումնասիրվող հավելվածների աշխատանքի վրա և ոչ մի կերպ չի ազդում դրանց կատարման վրա, ինչը թույլ է տալիս կազմակերպել գործարկվող համակարգերի վերլուծությունը թռիչքի ժամանակ: DTrace-ի ուժեղ կողմերից մեկը բարձր մակարդակի D լեզուն է, որը նման է AWK-ին, որտեղ շատ ավելի հեշտ է ստեղծել հետագծման սկրիպտներ, քան օգտագործել այն գործիքները, որոնք առաջարկվում են C, Python և Lua-ում արտաքին գրադարաններով գրելու համար eBPF մշակիչներ:

Oracle-ի ինժեներները նույնպես աշխատում են GCC-ի համար eBPF backend ստեղծելու վրա և արդեն հրապարակել են կարկատել հավաքածու ինտեգրել eBPF աջակցությունը GCC և հասել է ներառյալ կոդը՝ eBPF-ին աջակցելու համար GNU բինուտիլներում: Սկզբում eBPF-ի աջակցության հետին պլանը հիմնված է LLVM տեխնոլոգիաների վրա, սակայն Oracle-ը շահագրգռված է GCC-ում eBPF-ի համար ծրագրեր ստեղծելու ստանդարտ ունակության տեսքով, որը թույլ կտա օգտագործել մեկ գործիքակազմ ինչպես Linux միջուկը, այնպես էլ ծրագրեր կառուցելու համար: eBPF-ի համար:

Ի լրումն բայթկոդերի ստեղծման հետնամասի, GCC-ի համար առաջարկվող patches-ը ներառում է նաև libgcc միացք eBPF-ի համար և գործիքներ ELF ֆայլեր ստեղծելու համար, ինչը հնարավորություն է տալիս eBPF վիրտուալ մեքենայում կոդը կատարել միջուկով տրամադրվող բեռնիչներով: Առայժմ C լեզվով ծածկագիրը կարող է թարգմանվել բայթկոդի (ոչ բոլոր լեզվական հնարավորություններն են հասանելի), սակայն ապագայում ակնկալվում է ընդլայնել C լեզվի հնարավորությունները, որոնք հասանելի են օգտագործման համար, ավելացնել աջակցություն այլ լեզուների համար, ստեղծել սիմուլյատոր և ավելացնել GCC աջակցություն eBPF ծրագրերի վրիպազերծման համար՝ առանց միջուկի մեջ բեռնելու:

Source: opennet.ru

Добавить комментарий