Oracle Corporation töötamisest seoses DTrace'iga seotud muudatuste edastamisega upstream'ile ja plaanidest rakendada DTrace dünaamilise silumise tehnoloogiat Linuxi põhinfrastruktuuri kaudu, kasutades näiteks selliseid alamsüsteeme nagu eBPF. Esialgu oli DTrace'i kasutamise peamine probleem Linuxis litsentsitaseme kokkusobimatus, kuid 2018. aastal DTrace'i koodi GPLv2 alusel.
DTrace on juba olemas laiendatud tuumas Oracle Linuxi distributsioonis, kuid selle kasutamiseks teistes distributsioonides on vajalik tuuma täiendavate patch'ide rakendamine, mis piirab antud tehnoloogia kasutamist. Näiteks, Oracle jagab põhjalikku juhendit DTrace'i installimiseks ja kasutamiseks Fedora Linuxis. Installimiseks on vajalik ette valmistada ja kasutada Linuxi tuuma, mis on kokku pandud . Oracle'i ja Fedora patch'idega tuuma koostamise automatiseerimiseks on välja pakutud .
eBPF on Linux'i kernelisse sisseehitatud bytecode'i interpreter, mis võimaldab luua võrgutegevuse töötlejat, jälgida süsteemide tööd, kinni püüda süsteemikõnesid, kontrollida ligipääsu, hallata sündmusi aja tähistamisega (perf_event_open), arvestada operatsioonide sagedust ja kestust, ning teostada jälgimist kprobes/uprobes/tracepoints'i abil. JIT-kompileerimise kasutamine võimaldab bytecode'i reaalajas masiinijuhisteks transleerimist, pakkudes natiivse koodi tasemel suurendatud jõudlust. DTrace'i saab rakendada eBPF-i peal, sarnaselt sellele, kuidas see on eBPF-i peal. olemasolevad jälgimisvahendid.
DTrace tehnoloogia, mis on välja töötatud Solaris operatsioonisüsteemi jaoks, lahendab süsteemi tuumade ja lõpprakenduste dünaamilise jälgimise ülesandeid, võimaldades kasutajal põhjalikult jälgida süsteemi käitumist ja reaalajas diagnostikat teha. DTrace ei mõjuta silumiste protsessi uuringu all olevate rakenduste toimimist ega mõjuta nende jõudlust, mis võimaldab korraldada töötavate süsteemide analüüsi lennult. DTrace tugevateks külgedeks on kõrgtasemeline D keel, mis sarnaneb AWK-ga, millega on palju lihtsam luua jälgimisskripte kui eBPF-ile pakutud C, Python ja Lua keelte ning väliste teekide kaudu töötades.
Oracle'i insenerid töötavad samuti eBPF-tagaside rajamise kallal GCC jaoks ja on juba avaldanud eBPF toe integreerimise jaoks GCC-s ja включения кода для поддержки eBPF в GNU binutils. Изначально бэкенд для поддержки eBPF основывается на технологиях LLVM, но компания Oracle заинтересована в появлении в GCC штатной возможности генерации программ для eBPF, что позволит использовать один инструментарий как для сборки ядра Linux, так и для сборки программ для eBPF.
Кроме бэкенда для генерации байткода предложенные для GCC патчи также включают порт libgcc для eBPF и средства для формирования ELF-файлов, дающие возможность выполнить код в виртуальной машине eBPF с использованием предоставляемых ядром загрузчиков. В байткод пока может транслироваться код на языке Си (не все возможности языка доступны), но в будущем ожидается расширение доступных для применения возможностей языка Си, добавление поддержки других языков, создание симулятора и добавление поддержки GCC для отладки eBPF-программ без загрузки в ядро.
Allikas: opennet.ru
