Společnost Oracle zveřejnila DTrace pro Linux 2.0.0-1.14

Byl představen experimentální vydání nástroje pro dynamické ladění DTrace pro Linux 2.0.0-1.14, realizovaný jako proces běžící v prostoru uživatele, využívající subsystém eBPF a standardní mechanismy sledování poskytované jádrem Linux. Funkcionalitou je implementace DTrace na základě eBPF blízká první implementaci DTrace pro Linux, která byla provedena ve formě jádrového modulu. Kód projektu je distribuován pod licencí GPLv2.

Nástroj lze používat se standardními jádry Linux, které podporují BPF. Pro fungování je potřebná knihovna libctf s implementací podpory ladicího formátu CTF (Compact Type Format), která je součástí balíčku binutils od verze 2.40, nebo knihovna libdtrace-ctf, portovaná ze Solaris. Volitelně jsou k dispozici dvě opravy pro jádro 6.7, které umožňují využití rozšířených funkcí pro získávání dodatečných údajů o modulech a jádru.

Technologie DTrace byla vyvinuta k řešení úloh dynamického sledování jádra a koncových aplikací v operačním systému Solaris. DTrace poskytuje uživateli možnost podrobně sledovat chování systému a v reálném čase provádět diagnostiku problémů. Během ladění DTrace neovlivňuje práci testovaných aplikací a nijak neodráží jejich výkon, což umožňuje analyzovat běžící systémy za chodu. Mezi silné stránky DTrace patří vysoceúrovňový jazyk D, podobný AWK, na kterém je mnohem snazší vytvářet ladicí skripty než při používání prostředků pro eBPF, navržených pro psaní zpracovatelů v jazycích C, Python a Lua s externími knihovnami.

Hlavní funkce:

  • Dostupní poskytovatelé:
    • cpc (CPU Performance Counter) — získávání informací o výkonu.
    • dtrace — zpracovatelé BEGIN, END a ERROR, spuštěné před nebo po jiných kontrolách, stejně jako při výskytu chyb.
    • fbt (Function Boundary Tracing) — sledování přístupů k funkcím jádra.
    • lockstat — sledování stavu zámků.
    • pid — sledování přístupů k funkcím v procesech běžících v prostoru uživatele.
    • proc — sledování aktivity spojené s procesy, jako je zahájení a ukončení práce (fork, exec, exit, fault).
    • profile — uchovávání statistik o výkonu v určených časových intervalech.
    • sdt, rawtp — statická stopa jádra (SDT — Staticky definované stopování).
    • usdt: statická stopa aplikací (USDT — Uživatelově staticky definované stopování)
    • sched — sledování rozdělení CPU prostředků.
    • sycall — sledování vstupu a výstupu systémových volání.
  • Agregace shromážděných dat: možnost použití agregátních funkcí (avg, count, llquantize, lquantize, max, min, quantize, stddev a sum) a agregátních akcí (clear, normalize, printa). Podpora ukládání výsledků aplikace agregátních funkcí do běžných a asociativních polí.
  • Podpora spekulativního stopování, které umožňuje dočasně sledovat data a rozhodovat, která z nich mají být uložena do stopovacího bufferu a která mají být odmítnuta. K dispozici jsou funkce: speculation, speculate, commit a discard.
  • Podpora globálních a lokálních proměnných, TLS (Thread-Local Storage), asociativních jednotlivin a řetězců.
  • Poskytnutí vestavěných proměnných: 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.
  • Podpora akcí: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack a usym.
  • Přítomnost vestavěných funkcí: 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.
  • Přítomnost čítačů dat, která se nedostanou do stopovacích bufferů.
  • Podpora kompilace scénářů stopování v jazyce D do formy BPF programů.
  • Předkompilace funkcí BPF pro volání knihoven.
  • Možnost bpflog pro získání logu verifikace načítaných BPF programů.
  • Dynamická generace kódu a předkompilace kódu pro opakované použití v BPF programech.

Změny v nové verzi:

  • Do poskytovatele pid, použitého pro sledování procesů v uživatelském prostoru, byla přidána podpora sledování provádění instrukcí podle jejich posunutí v kódu.
  • Byla přidána podpora použití funkcí stack() a ustack() pro agregaci shromážděných dat.
  • Možnost odstranění prvků libovolných typů z asociativních polí pomocí přiřazení literálu 0.
  • Byla přidána akce print pro výstup strukturovaných dat s anotacemi typů.
  • Byly přidány nové vestavěné funkce cleanpath(), d_path() a link_ntop().
  • Byl přidán parametr „-xcpu“, který umožňuje vázat kontroly na určité CPU.
  • Byl přidán parametr „-xlockmem“ pro omezení velikosti paměti.
  • Byla zajištěna možnost ukládání dat sledování procesů (USDT) mezi restartováními dtprobed.
  • Podpora mechanismu BTF (BPF Type Format), který poskytuje informace pro kontrolu typů v pseudokódu BPF.
  • Možnost použití skriptu configure pro sestavení.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster