Az Oracle megjelentette a DTrace-t Linuxra 2.0.0-1.14.

Bemutatásra került a DTrace dinamikus hibakeresési eszköz Linux 2.0.0-1.14-es verziójához készült kísérleti kiadása, amely felhasználói térben futó folyamat formájában valósul meg, az eBPF alrendszert és a Linux kernel által biztosított nyomozási mechanizmusokat felhasználva. A funkcionálisan az eBPF alapú DTrace megvalósítása közel áll az első, Linux számára készült DTrace megvalósításhoz, amely kernel modul formájában készült. A projekt kódja GPLv2 licenc alatt terjesztendő.

Az eszköz használható a BPF-t támogató alapértelmezett Linux kernel verziókkal. A működéshez szükséges a libctf könyvtár, amely támogatja a CTF (Compact Type Format) hibakeresési formátumot, és amely a binutils csomag része a 2.40-es verziótól kezdve, vagy a Solarisból portolt libdtrace-ctf könyvtár. Opcionálisan két javítócsomag érhető el a 6.7-es kernelhez, amelyek lehetővé teszik kiterjesztett képességek használatát további modul és kernel adatgyűjtéséhez.

A DTrace technológiát a kernel és a végső alkalmazások dinamikus nyomozási feladataira fejlesztették ki a Solaris operációs rendszerben. A DTrace lehetőséget ad a felhasználónak, hogy részletesen nyomon kövesse a rendszer működését, és valós időben diagnosztizálja a problémákat. A hibakeresés során a DTrace nem befolyásolja a vizsgált alkalmazások működését, és egyáltalán nem hat a teljesítményükre, ami lehetővé teszi a működő rendszerek elemzését menet közben. A DTrace erősségei között emeljük ki a D nyelvet, amely hasonlít az AWK-ra, és amelyen jelentősen egyszerűbben készíthetők nyomozási szkriptek, mint az eBPF eszközeivel, amelyek C, Python és Lua nyelveken írt feldolgozókkal külső könyvtárakat igényelnek.

Főbb funkciók:

  • Elérhető szolgáltatók:
    • cpc (CPU Performance Counter) — a teljesítményinformációk megszerzése.
    • dtrace — a BEGIN, END és ERROR kezelők, amelyek más ellenőrzések előtt vagy után, valamint hibák esetén kerülnek végrehajtásra.
    • fbt (Function Boundary Tracing) — a kernel függvényhívásainak nyomkövetése.
    • lockstat — a zárak állapotának nyomozása.
    • pid — hívások nyomozása felhasználói térben futó folyamatokban.
    • proc — folyamatspecifikus aktivitások nyomozása, mint például a folyamatok indítása és leállítása (fork, exec, exit, fault).
    • profile — a teljesítménystatisztikák rögzítése meghatározott időközönként.
    • sdt, rawtp — statikus magkernj tracesz (SDT — Statically Defined Tracing).
    • usdt: statikus alkalmazás-tracing (USDT — Userspace Statically Defined Tracing)
    • sched — CPU erőforrások elosztásának nyomkövetése.
    • sycall — rendszervcalls-ba való belépések és kilépések nyomkövetése.
  • Gyűjtött adatok aggregálása: lehetőség aggregáló funkciók (avg, count, llquantize, lquantize, max, min, quantize, stddev és sum) és aggregáló műveletek (clear, normalize, printa) alkalmazására. Az aggregáló funkciók eredményeinek megszorítása normál és asszociatív tömbökben támogatott.
  • Speculativ nyomkövetés támogatása, amely lehetővé teszi az adatok átmeneti nyomkövetését, döntve arról, hogy mely adatokat rögzítsen a nyomkövető pufferben és melyeket dobjon el. Elérhetők a következő funkciók: speculation, speculate, commit és discard.
  • Globális és helyi változók, TLS (Thread-Local Storage), asszociatív tömbök és karakterláncok támogatása.
  • Beépített változók biztosítása: arg0 — arg9, args[], caller, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, probefunc, probemod, probename, probeprov, stackdepth, tid, timestamp, ucaller, uid, uregs[], ustackdepth, walltimestamp.
  • Következő műveletek támogatása: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack és usym.
  • Beépített funkciók megléte: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owned, mutex_owner, mutex_type_adaptive, mutex_type_spin, ntohl, ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • Nyomkovetett pufferbe nem kerülő adatszámlálók megléte.
  • Követési szkriptek D nyelven történő Fordításának támogatása BPF-programokká.
  • BPF függvények előkompilálása könyvtári hívásokhoz.
  • bpflog lehetőség a betöltött BPF-programok ellenőrzési naplójának rögzítéséhez.
  • Dinamikus kódgenerálás és kód előkompilálás a BPF-programok újrafelhasználásához.

Újdonságok az új verzióban:

  • A pid szolgáltatóba, amelyet a felhasználói tér folyamatainak nyomkövetésére használnak, hozzá lett adva az utasítások nyomkövetésének támogatása a kódon belüli eltolásuk alapján.
  • A stack() és ustack() függvények alkalmazásának támogatása a gyűjtött adatok aggregálásához.
  • Az asszociatív tömbök elemeinek bármilyen típusú eltávolításának lehetősége 0 literál hozzárendelésével.
  • A strukturált adatok típusannotációval való kinyomtatásához hozzáadva a print művelet.
  • Új beépített funkciók: cleanpath(), d_path() és link_ntop() hozzáadva.
  • Hozzáadva egy „-xcpu” paraméter, amely lehetővé teszi a vizsgálatok bizonyos CPU-khoz való kötését.
  • Hozzáadva egy „-xlockmem” paraméter a memória méretének korlátozására.
  • Biztosított a folyamatok (USDT) nyomkövetési adatai közötti mentés lehetősége a dtprobed újraindításai között.
  • Támogatás a BTF (BPF Type Format) mechanizmushoz, amely információt nyújt a típusok ellenőrzéséhez a BPF pszeudokódban.
  • Lehetőség egy configure szkript használatára a buildeléshez.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster