Oracle namjerava redizajnirati DTrace za Linux koristeći eBPF

Tvrtka Oracle izvijestio o radu na prijenosu promjena vezanih uz DTrace na uzvodno i planovima za implementaciju tehnologije dinamičkog otklanjanja pogrešaka DTrace povrh standardne infrastrukture Linux kernela, naime pomoću podsustava kao što je eBPF. U početku je glavni problem s korištenjem DTracea na Linuxu bila nekompatibilnost na razini licence, ali Oracle 2018. relicenciran DTrace kod pod GPLv2.

DTrace već Dugo vrijeme nudi se kao dio proširene jezgre za Oracle Linux distribuciju, ali za korištenje u drugim distribucijama zahtijeva korištenje dodatnih zakrpa jezgre, što ograničava korištenje ove tehnologije. Kao primjer, Oracle pripremljeno detaljne upute za instaliranje i korištenje DTracea na Fedora Linuxu. Za ugradnju potrebna montaža alata i korištenje jezgre Linuxa obnovljene iz zakrpe. Predlaže se automatizirati izvođenje izgradnje kernela s Oracle i Fedora zakrpama skripta.

eBPF je interpreter bajt-koda ugrađen u Linux kernel koji vam omogućuje stvaranje rukovatelja mrežnim operacijama, praćenje rada sustava, presretanje sistemskih poziva, kontrolu pristupa, procesiranje događaja s mjerenjem vremena (perf_event_open), brojanje učestalosti i vrijeme izvršavanja operacija, izvođenje praćenja pomoću kprobes /uprovjerava /tragove. Zahvaljujući korištenju JIT kompilacije, bajt kod se u hodu prevodi u strojne instrukcije i izvršava s izvedbom izvornog koda. DTrace se može implementirati povrh eBPF-a, slično kao što se implementira povrh eBPF-a rade postojeće alate za praćenje.

Tehnologija DTrace razvijena je za operativni sustav Solaris kako bi riješila problem dinamičkog praćenja jezgre sustava i krajnjih aplikacija, dajući korisniku mogućnost da detaljno prati ponašanje sustava i dijagnosticira probleme u stvarnom vremenu. Tijekom procesa otklanjanja pogrešaka, DTrace ne utječe na rad aplikacija koje se proučavaju i ni na koji način ne utječe na njihovu izvedbu, što vam omogućuje da organizirate analizu pokrenutih sustava u hodu. Jedna od prednosti DTracea je D jezik visoke razine, sličan AWK-u, u kojem je mnogo lakše stvoriti skripte za praćenje nego koristiti alate koji se nude za pisanje eBPF rukovatelja u C, Python i Lua s vanjskim bibliotekama.

Inženjeri iz Oraclea također rade na stvaranju eBPF pozadine za GCC i već su objavili set zakrpa integrirati eBPF podršku u GCC i postignuto uključujući kod za podršku eBPF u GNU binutils. U početku, backend za eBPF podršku temelji se na LLVM tehnologijama, ali Oracle je zainteresiran da se u GCC-u pojavi standardna mogućnost generiranja programa za eBPF, što će omogućiti korištenje jednog alata za izgradnju Linux kernela i za izgradnju programa za eBPF.

Osim pozadine za generiranje bajt-koda, predložene zakrpe za GCC također uključuju libgcc priključak za eBPF i alate za generiranje ELF datoteka, što omogućuje izvršavanje koda u eBPF virtualnom stroju pomoću učitavača koje pruža kernel. Za sada se kod na jeziku C može prevesti u bajt kod (nisu dostupne sve značajke jezika), ali u budućnosti se očekuje proširenje mogućnosti jezika C dostupnih za korištenje, dodavanje podrške za druge jezike, stvaranje simulatora i dodajte GCC podršku za otklanjanje pogrešaka u eBPF programima bez učitavanja u kernel.

Izvor: opennet.ru

Dodajte komentar