Kompania Oracle rreth punës për transferimin e ndryshimeve të lidhura me DTrace në upstream dhe planet për implementimin e teknologjisë së debugging dinamik DTrace mbi infrastrukturën standarde të bërthamës Linux, në veçanti me përdorimin e sistemeve nënvizuese si eBPF. Fillimisht, problemi kryesor me përdorimin e DTrace në Linux ishte mosmiratimi në nivel licence, por në vitin 2018, kompania Oracle kodin DTrace nën GPLv2.
DTrace ka i ofruar si pjesë e bërthamës së avancuar për distribucionin Oracle Linux, por për përdorimin e tij në distribucione të tjera kërkon aplikimin e patches shtesë për bërthamën, që e kufizon përdorimin e kësaj teknologjie. Si një shembull, kompania Oracle ka publikuar një udhëzues të detajuar për instalimin dhe përdorimin e DTrace në Fedora Linux. Për instalimin kërkohet ndërtimi dhe aplikimi i bërthamës Linux, e ri-ndërtuar me . Për automatizimin e ekzekutimit të ndërtimit të bërthamës me patches Oracle dhe Fedora, është propozuar .
eBPF përbën një interpretues të inkorporuar në bërthamën Linux për bytecode, duke mundësuar krijimin e trajtuesve të operacioneve rrjetore, monitorimin e aktiviteteve të sistemeve, kapjen e thirrjeve sistemike, kontrollin e qasjes, trajtimin e ngjarjeve me ruajtjen e kohës (perf_event_open), numërimin e frekuencës dhe kohës së ekzekutimit të operacioneve, dhe realizimin e gjurmimit duke përdorur kprobes/uprobes/tracepoints. Falë aplikimit të JIT-kompilimit, bytecode në kohë reale transfiromet në instruksione makinerike dhe ekzekutohet me performancën e kodit natyror. DTrace mund të implementohet mbi eBPF, ashtu siç bëhet me mjetet ekzistuese të gjurmimit.
Teknologjia DTrace u zhvillua për sistemin operativ Solaris për të zgjidhur problemet e gjurmimit dinamik të bërthamës së sistemit dhe aplikacioneve përfundimtare, duke i dhënë përdoruesit mundësinë për të ndjekur në detaje sjelljen e sistemit dhe për të kryer diagnostikimin e problemeve në kohë reale. Gjatë procesit të debugging, DTrace nuk ndikon në funksionimin e aplikacioneve të shqyrtuara dhe nuk reflektohet në performancën e tyre, gjë që mundëson analizën e sistemeve në punë në kohë reale. Mes avantazheve të DTrace, përmendet gjuha e nivelit të lartë D, e ngjashme me AWK, e cila është shumë më e lehtë për të krijuar skenarë gjurmimi sesa përdorimi i mjeteve të ofruara për eBPF që shkruajnë trajtues në gjuhët C, Python dhe Lua me biblioteka të jashtme.
Inxhinierët nga Oracle gjithashtu po punojnë për krijimin e një eBPF-backend për GCC dhe tashmë kanë publikuar për integrimin e mbështetjes eBPF në GCC dhe të inkorporoni kodin për mbështetje eBPF në GNU binutils. Fillimisht, backend 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 gjenerimin e programeve për eBPF, gjë që do të mundësojë përdorimin e një grupi të instrumenteve për ndërtimin e bërthamës Linux dhe për ndërtimin e programeve për eBPF.
Përveç backend-it për gjenerimin e bytecode, patches e propozuara për GCC gjithashtu përfshijnë portin libgcc për eBPF dhe mjetet për formimin e skedarëve ELF, duke ofruar mundësinë për të ekzekutuar kodin në makinë virtuale eBPF duke përdorur ngarkuesit e ofruar nga bërthama. Deri më tani, kodet në gjuhën C (nuk janë të gjitha funksionalitetet e gjuhës të disponueshme) mund të transfiromen në bytecode, por në të ardhmen pritet zgjerimi i mundësive të disponueshme të gjuhës C, shtimi i mbështetjes për gjuhë të tjera, krijimi i një simulatori dhe shtimi i mbështetjes për GCC për debugging eBPF-programave pa u ngarkuar në bërthamë.
Burimi: opennet.ru
