Oracle har offentliggjort DTrace til Linux 2.0.0-1.14

Der eksperimentelle version af DTrace's dynamiske fejlfinding værktøjer til Linux 2.0.0-1.14 er blevet præsenteret som et brugerproces, der bruger eBPF subsystemet og de integrerede tracing-mekanismer, der tilbydes af Linux-kernen. Funktionsmæssigt er DTrace-implementeringen baseret på eBPF nær det første DTrace for Linux, som blev udført som en kernelmodul. Projektkoden distribueres under GPLv2-lisensen.

Værktøjerne kan anvendes med standard Linux-kerneler, der understøtter BPF. For at fungere kræves biblioteket libctf, der implementerer understøttelse af debug-formatet CTF (Compact Type Format), som er inkluderet i binutils-pakken fra version 2.40, eller library libdtrace-ctf, der er porteret fra Solaris. Der tilbydes valgfrit to patches til kerne 6.7, som muliggør avancerede funktioner for at indsamle yderligere data om moduler og kernen.

DTrace-teknologien blev udviklet til at løse opgaver relateret til dynamisk tracing af kernen og slutapplikationer i Solaris-operativsystemet. DTrace giver brugeren mulighed for at spore systemets adfærd i detaljer og diagnosticere problemer i realtid. Under fejlfinding påvirker DTrace ikke de undersøgte applikationers drift og har ingen indflydelse på deres ydeevne, hvilket muliggør analyse af kørende systemer on-the-fly. DTrace's styrker omfatter det højniveausprog D, som ligner AWK, hvormed det er betydeligt lettere at oprette tracing-scripts sammenlignet med de eBPF-værktøjer, der kræver skribenter på C, Python og Lua med eksterne biblioteker.

Hovedfunktioner:

  • Tilgængelige udbydere:
    • cpc (CPU Performance Counter) — hente oplysninger om ydeevne.
    • dtrace — BEGIN, END og ERROR håndterere, der køres før eller efter andre tjek samt ved opståen af fejl.
    • fbt (Function Boundary Tracing) — sporing af funktioner i kernen.
    • lockstat — sporing af låsetilstande.
    • pid — sporing af funktionsanrop i processer, der kører i brugerområder.
    • proc — sporing af aktivitet relateret til processer, såsom opstart og afslutning (fork, exec, exit, fault).
    • profile — gemme statistik om ydeevne over angivne tidsintervaller.
    • sdt, rawtp — statisk kernetracing (SDT — Statically Defined Tracing).
    • usdt: statisk applikationstracing (USDT — Userspace Statically Defined Tracing)
    • sched — sporing af CPU-resourcefordeling.
    • sycall — sporing af ind- og udgang i systemopkald.
  • Aggeration af indsamlede data: mulighed for anvendelse af aggregeringsfunktioner (avg, count, llquantize, lquantize, max, min, quantize, stddev og sum) og aggregeringshandlinger (clear, normalize, normalize, printa). Understøttelse af gemme resultaterne fra anvendelsen af aggregeringsfunktioner i almindelige og associative arrays.
  • Understøttelse af spekulativ tracing, der gør det muligt at sporere data midlertidigt, besluttende hvilke der skal gemmes i tracing-bufferet, og hvilke der skal kasseres. Tilgængelige funktioner: speculation, speculate, commit og discard.
  • Understøttelse af globale og lokale variabler, TLS (Thread-Local Storage), associative arrays og strenge.
  • Fremvisning af indbyggede variabler: 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.
  • Understøttelse af handlinger: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack og usym.
  • Tilstedeværelse af indbygget funktioner: 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.
  • Tilstedeværelse af datacounter, der ikke går ind i tracing-buffere.
  • Understøttelse af kompilering af tracing scripts på D-sprog i form af BPF-programmer.
  • Forudkompilering af BPF-funktioner til bibliotekskald.
  • Option bpflog til at få log for verifikation af indlæste BPF-programmer.
  • Dynamisk generering af kode og forudkompilering af kode til genbrug i BPF-programmer.

Ændringer i den nye version:

  • I PID-udbyderen, der anvendes til sporingsprocesser i brugerrum, er der tilføjet understøttelse af sporing af udførelsesinstruktioner baseret på deres forskydning i koden.
  • Tilføjet understøttelse af anvendelse af funktionerne stack() og ustack() til aggregering af indsamlede data.
  • Mulighed for at fjerne elementer af enhver type fra associative arrays ved at tildele litteralen 0.
  • Tilføjet print-handling til at udskrive strukturerede data med typeannoteringer.
  • Tilføjet nye indbyggede funktioner cleanpath(), d_path() og link_ntop().
  • Tilføjet parameteren «-xcpu», der gør det muligt at binde kontroller til bestemte CPU'er.
  • Tilføjet parameteren «-xlockmem» for at begrænse størrelsen af hukommelsen.
  • Givet mulighed for at gemme sporingsdata for processer (USDT) mellem genstarter af dtprobed.
  • Understøttelse af BTF (BPF Type Format) mekanismen, der giver information til typekontrol i BPF pseudokode.
  • Mulighed for at bruge konfigureringsscriptet til bygning.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster