Kompania Oracle rreth punëve për kalimin e ndryshimeve të lidhura me DTrace në upstream dhe planet për implementimin e teknologjisë së debugging dinamik DTrace mbi infrastrukturën përkatëse të kernelit Linux, konkretisht duke përdorur nën-sistemat si eBPF. Fillimisht, problemi kryesor me përdorimin e DTrace në Linux ishte inkompatibiliteti në nivelin e licensave, por në vitin 2018 компания Oracle kodin DTrace nën GPLv2.
DTrace tashmë ofrohet si pjesë e kernelit të zgjeruar për distribucionin Oracle Linux, por për përdorimin e tij në distribucione të tjera kërkon aplikimin e patches shtesë për kernelin, që e kufizon përdorimin e teknologjisë së përmendur. Si një shembull, компания Oracle në mënyrë të detajuar udhëzuesin për instalimin dhe përdorimin e DTrace në Fedora Linux. Për instalimin kërkohet ndërtimi dhe aplikimi i kernelit Linux, i rindërtuar me . Për automatizimin e procesit të ndërtimit të kernelit me patches Oracle dhe Fedora është propozuar .
eBPF është një interpretues i kodit të byte-integruar në kernelin Linux, që lejon krijimin e trajtuesve të operacioneve rrjet, monitorimin e funksionimit të sistemeve, kapjen e thirrjeve sistemike, kontrollin e aksesit, përpunimin e ngjarjeve me ruajtjen e ndjekjes (perf_event_open), numërimin e frekuencës dhe kohës së ekzekutimit të operacioneve, kryerjen e tracing me përdorimin e kprobes/uprobes/tracepoints. Falë aplikimit të kompilimit JIT, kodi i byte përkthehet në instruksione makinerie në fluks dhe ekzekutohet me performancën e kodit natyror. DTrace mund të realizohet mbi eBPF, ashtu siç është mbi eBPF mjetet aktuale të tracing.
Teknologjia DTrace është zhvilluar për sistemin operativ Solaris për të trajtuar detyrat e ndjekjes dinamike të bërthamës së sistemit dhe aplikacioneve përfundimtare, duke i dhënë përdoruesit mundësinë për të monitoruar në detaje sjelljen e sistemit dhe për të diagnostikuar problemet në kohë reale. Gjatë procesit të depurimit, DTrace nuk ndikon në funksionimin e aplikacioneve të shqyrtuara dhe nuk reflektohet në performancën e tyre, çka lejon organizimin e analizës së sistemeve në punë. Një nga pikat e forta të DTrace është gjuha e nivelit të lartë D, e ngjashme me AWK, e cila ndihmon në krijimin më të lehtë të skenarëve të ndjekjes sesa me përdorimin e mjeteve të ofruara për eBPF të shkruar në gjuhët C, Python dhe Lua me biblioteka të jashtme.
Inxhinierët nga Oracle po punojnë gjithashtu për krijimin e një backend-i eBPF për GCC dhe tashmë kanë publikuar për integrimin e mbështetjes eBPF në GCC dhe të përfshijnë kodin për mbështetje eBPF në GNU binutils. Fillimisht, backend-i për mbështetje eBPF bazohet në teknologjitë LLVM, por kompania Oracle është e interesuar në shfaqjen e një mundësie të natyrshme në GCC për të gjeneruar programe për eBPF, gjë që do të lejojë përdorimin e një grupi mjetesh për ndërtimin e bërthamës Linux dhe ndërtimin e programeve për eBPF.
Përveç backend-it për gjenerimin e kodit bajt, patch-et e propozuara për GCC gjithashtu përfshijnë portin libgcc për eBPF dhe mjete për formimin e skedarëve ELF, duke lejuar ekzekutimin e kodit në makinën virtuale eBPF me ndihmën e ngarkuesve të ofruar nga bërthama. Deri tani, kodi në gjuhën C mund të përkthehet në kod bajt (nuk janë të gjitha mundësitë e gjuhës të disponueshme), por në të ardhmen pritet zgjerimi i mundësive të aplikueshme të gjuhës C, shtimi i mbështetjes për gjuhë të tjera, krijimi i një simulatori dhe shtimi i mbështetjes GCC për depurimin e programeve eBPF pa ngarkim në bërthamë.
Burimi: opennet.ru
