Az Oracle az eBPF segítségével kívánja újratervezni a DTrace for Linuxot

Oracle Company számolt be a DTrace-hez kapcsolódó változtatások upstream-re történő átvitelével kapcsolatos munkáról, valamint a DTrace dinamikus hibakeresési technológia megvalósításának terveiről a szabványos Linux kernel-infrastruktúrán, nevezetesen olyan alrendszerek használatával, mint az eBPF. Kezdetben a DTrace Linuxon való használatának fő problémája a licencszintű inkompatibilitás volt, de 2018-ban az Oracle újraengedélyezett DTrace kód GPLv2 alatt.

DTrace már hosszú idő Az Oracle Linux disztribúció kiterjesztett kernel részeként kínálják, de más disztribúciókban való használatához további kernelfoltok használata szükséges, ami korlátozza ennek a technológiának a használatát. Például az Oracle előkészített részletes utasításokat a DTrace telepítéséhez és használatához Fedora Linux rendszeren. A telepítéshez összeszerelés szükséges eszközöket és egy Linux-kernel használatáról újraépített foltok. A kernelépítés Oracle és Fedora javításokkal történő automatizálására javasolt forgatókönyv.

Az eBPF egy Linux kernelbe épített bájtkód értelmező, amely lehetővé teszi a hálózati műveletkezelők létrehozását, a rendszer működésének figyelését, a rendszerhívások lehallgatását, a hozzáférés szabályozását, az események időzítéssel történő feldolgozását (perf_event_open), a műveletek gyakoriságának és végrehajtási idejének számlálását, nyomkövetést kprobes segítségével. /uprobes /tracepoints. A JIT fordítás használatának köszönhetően a bájtkódot menet közben gépi utasításokká fordítják, és a natív kód teljesítményével hajtják végre. A DTrace megvalósítható az eBPF tetején, hasonlóan az eBPF tetején való megvalósításhoz dolgoznak meglévő nyomkövető eszközök.

A DTrace technológiát a Solaris operációs rendszerhez fejlesztették ki, hogy megoldja a rendszermag és a végalkalmazások dinamikus nyomkövetésének problémáját, lehetővé téve a felhasználó számára a rendszer viselkedésének részletes figyelését és a problémák valós időben történő diagnosztizálását. A hibakeresési folyamat során a DTrace nem befolyásolja a vizsgált alkalmazások működését, és semmilyen módon nem befolyásolja azok teljesítményét, ami lehetővé teszi a futó rendszerek elemzésének menet közbeni megszervezését. A DTrace egyik erőssége az AWK-hoz hasonlóan magas szintű D nyelv, amelyben sokkal egyszerűbb nyomkövetési szkripteket létrehozni, mint a C, Python és Lua nyelvű eBPF-kezelők külső könyvtárakkal történő írására kínált eszközöket használni.

Az Oracle mérnökei egy eBPF háttérrendszer létrehozásán is dolgoznak a GCC számára, és már publikáltak is tapaszkészlet az eBPF támogatás integrálására a GCC-be és elért beleértve a kódot az eBPF támogatására a GNU binutilsban. Kezdetben az eBPF-támogatás háttérrendszere LLVM-technológiákon alapul, de az Oracle-t érdekli, hogy a GCC-ben megjelenjen egy szabványos eBPF-programok generálási képessége, amely lehetővé teszi egy eszközkészlet használatát mind a Linux kernel, mind a programok készítéséhez. az eBPF-hez.

A bájtkód-generáló háttérprogram mellett a javasolt javítások a GCC-hez egy libgcc portot is tartalmaznak az eBPF számára, valamint az ELF-fájlok generálására szolgáló eszközöket, amelyek lehetővé teszik a kód futtatását az eBPF virtuális gépen a kernel által biztosított betöltőkkel. Egyelőre a C nyelvű kód lefordítható bájtkódra (nem minden nyelvi funkció érhető el), de a jövőben várhatóan kibővíti a használható C nyelvi lehetőségeket, további nyelvek támogatását, szimulátort, ill. GCC támogatás hozzáadása az eBPF programok hibakereséséhez anélkül, hogy a rendszermagba be kellene tölteni.

Forrás: opennet.ru

Hozzászólás