Oracle synon të ridizajnojë DTrace për Linux duke përdorur eBPF

Kompania Oracle raportuar në lidhje me punën për transferimin e ndryshimeve të lidhura me DTrace në rrjedhën e sipërme dhe planet për të zbatuar teknologjinë e korrigjimit dinamik DTrace në krye të infrastrukturës standarde të kernelit Linux, përkatësisht duke përdorur nënsisteme të tilla si eBPF. Fillimisht, problemi kryesor me përdorimin e DTrace në Linux ishte papajtueshmëria në nivelin e licencës, por në 2018 Oracle rilicensuar Kodi DTrace nën GPLv2.

DTrace tashmë kohe e gjate ofrohet si pjesë e një kerneli të zgjeruar për shpërndarjen Oracle Linux, por për përdorimin e tij në shpërndarje të tjera kërkon përdorimin e arnimeve shtesë të kernelit, gjë që kufizon përdorimin e kësaj teknologjie. Si shembull, Oracle përgatitur udhëzime të hollësishme për instalimin dhe përdorimin e DTrace në Fedora Linux. Kërkohet montim për instalim mjetet dhe përdorimin e një kerneli Linux të rindërtuar nga arna. Për të automatizuar ekzekutimin e ndërtimit të kernelit me arna Oracle dhe Fedora, propozohet skenar.

eBPF është një përkthyes bajtkodi i integruar në kernelin Linux që ju lejon të krijoni mbajtës të funksionimit të rrjetit, të monitoroni funksionimin e sistemit, të përgjoni thirrjet e sistemit, të kontrolloni aksesin, të përpunoni ngjarjet me matjen e kohës (perf_event_open), të numëroni frekuencën dhe kohën e ekzekutimit të operacioneve, të kryeni gjurmimin duke përdorur kprobe /sonda /pika gjurmësh. Falë përdorimit të përpilimit JIT, bytekodi përkthehet menjëherë në instruksionet e makinës dhe ekzekutohet me performancën e kodit vendas. DTrace mund të zbatohet në krye të eBPF, ngjashëm me mënyrën se si zbatohet në krye të eBPF работают mjetet ekzistuese të gjurmimit.

Teknologjia DTrace u zhvillua për sistemin operativ Solaris për të zgjidhur problemin e gjurmimit dinamik të kernelit të sistemit dhe aplikacioneve fundore, duke i dhënë përdoruesit mundësinë për të monitoruar sjelljen e sistemit në detaje dhe për të diagnostikuar problemet në kohë reale. Gjatë procesit të korrigjimit, DTrace nuk ndikon në funksionimin e aplikacioneve në studim dhe nuk ndikon në asnjë mënyrë performancën e tyre, gjë që ju lejon të organizoni analizën e sistemeve që funksionojnë në fluturim. Një nga pikat e forta të DTrace është gjuha D e nivelit të lartë, e ngjashme me AWK, në të cilën është shumë më e lehtë të krijohen skriptet gjurmuese sesa përdorimi i mjeteve të ofruara për shkrimin e mbajtësve eBPF në C, Python dhe Lua me biblioteka të jashtme.

Inxhinierët nga Oracle po punojnë gjithashtu në krijimin e një backend eBPF për GCC dhe kanë publikuar tashmë set patch për të integruar mbështetjen eBPF në GCC dhe arritur duke përfshirë kodin për të mbështetur eBPF në binutilët GNU. Fillimisht, backend për mbështetjen eBPF bazohet në teknologjitë LLVM, por Oracle është i interesuar në shfaqjen në GCC të një aftësie standarde për të gjeneruar programe për eBPF, e cila do të lejojë përdorimin e një pakete veglash si për ndërtimin e kernelit Linux ashtu edhe për ndërtimin e programeve. për eBPF.

Përveç backend-it të gjenerimit të bajtkodit, arnimet e propozuara për GCC përfshijnë gjithashtu një portë libgcc për eBPF dhe mjete për gjenerimin e skedarëve ELF, duke bërë të mundur ekzekutimin e kodit në makinën virtuale eBPF duke përdorur ngarkues të ofruar nga kernel. Tani për tani, kodi në gjuhën C mund të përkthehet në bytecode (jo të gjitha veçoritë e gjuhës janë të disponueshme), por në të ardhmen pritet të zgjerohen aftësitë e gjuhës C të disponueshme për përdorim, të shtohet mbështetje për gjuhë të tjera, të krijohet një simulator dhe shtoni mbështetjen e GCC për korrigjimin e programeve eBPF pa u ngarkuar në kernel.

Burimi: opennet.ru

Shto një koment