Oracle har publicerat DTrace för Linux 2.0.0-1.14

En experimentell version av verktygen för dynamisk felsökning DTrace för Linux 2.0.0-1.14 har presenterats. Den Àr implementerad som en anvÀndarutrymmesprocess som anvÀnder eBPF-subsystemet och de inbyggda spÄrningsmekanismerna som tillhandahÄlls av Linux-kÀrnan. Funktionellt sett Àr implementeringen av DTrace baserat pÄ eBPF nÀra den första implementeringen av DTrace för Linux, som utfördes i form av en kÀrnmodul. Projektets kod distribueras under GPLv2-licensen.

Verktygen kan anvÀndas med standard Linux-kÀrnor som stöder BPF. För att fungera krÀvs biblioteket libctf som implementerar stöd för det debugformatet CTF (Compact Type Format), vilket ingÄr i paketet binutils frÄn version 2.40, eller biblioteket libdtrace-ctf, porterat frÄn Solaris. TvÄ patchar till kÀrna 6.7 erbjuds som valfritt för att aktivera utökade funktioner för att fÄ ytterligare data om moduler och kÀrnan.

DTrace-teknologin utvecklades för att lösa uppgifter för dynamisk spÄrning av kÀrnor och slutanvÀndarapplikationer i operativsystemet Solaris. DTrace ger anvÀndaren möjlighet att noggrant övervaka systemets beteende och diagnostisera problem i realtid. Under felsökningsprocessen pÄverkar inte DTrace de undersökta applikationerna och har ingen inverkan pÄ deras prestanda, vilket möjliggör analys av körande system i farten. Bland DTrace:s styrkor finns det hög-nivÄsprÄk D, som liknar AWK, vilket gör det betydligt enklare att skapa spÄrningsscenarier Àn med de verktyg för eBPF som anvÀnder sprÄk som C, Python och Lua med externa bibliotek.

Key features:

  • TillgĂ€ngliga leverantörer:
    • cpc (CPU Performance Counter) — hĂ€mtar information om prestanda.
    • dtrace — BEGIN, END och ERROR-handlers som körs före eller efter andra kontroller samt vid fel.
    • fbt (Function Boundary Tracing) — spĂ„rning av anrop till kĂ€rnfunktioner.
    • lockstat — spĂ„rning av lĂ„stillstĂ„nd.
    • pid — spĂ„rning av anrop till funktioner i processer som körs i anvĂ€ndarutrymme.
    • proc — spĂ„rning av aktivitet relaterad till processer, sĂ„som start och avslutning (fork, exec, exit, fault).
    • profile — sparar prestandastatistik vid angivna tidsintervall.
    • sdt, rawtp — statisk kĂ€rnspĂ„rning (SDT — Statically Defined Tracing).
    • usdt: statisk applikationsspĂ„rning (USDT — Userspace Statically Defined Tracing)
    • sched — övervakning av CPU-resursfördelning.
    • sycall — övervakning av systemanrop och avbrott.
  • Aggregating insamlade data: möjlighet att anvĂ€nda aggregatfunktioner (avg, count, llquantize, lquantize, max, min, quantize, stddev och sum) samt aggregatĂ„tgĂ€rder (clear, normalize, printa). Stöd för att spara resultaten av aggregatfunktioner i vanliga och associativa arrayer.
  • Stöd för spekulativ spĂ„rning, som tillĂ„ter ephemeral övervakning av data för att avgöra vilka som ska lagras i spĂ„rningsbufferten och vilka som ska kasseras. Funktioner tillgĂ€ngliga: speculation, speculate, commit och discard.
  • Stöd för globala och lokala variabler, TLS (Thread-Local Storage), associativa arrayer och strĂ€ngar.
  • TillhandahĂ„llande av inbyggda 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.
  • Stöd för Ă„tgĂ€rder: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack och usym.
  • NĂ€rvaro av inbyggda 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.
  • NĂ€rvaro av datarĂ€knare som inte hamnar i spĂ„rningsbuffrar.
  • Stöd för kompilering av spĂ„rningsskript i D-sprĂ„ket till BPF-program.
  • Förkompilering av BPF-funktioner för bibliotekanrop.
  • Alternativet bpflog för att fĂ„ loggning av verifiering av inlĂ€sta BPF-program.
  • Dynamisk kodgenerering och förkompilering av kod för Ă„teranvĂ€ndning i BPF-program.

FörÀndringar i den nya versionen:

  • I PID-leverantören, som anvĂ€nds för att spĂ„ra processer i anvĂ€ndarutrymmet, har stöd för spĂ„rning av instruktionens utförande lagts till genom att deras förskjutning i koden.
  • Stöd för att anvĂ€nda funktionerna stack() och ustack() för att aggregera insamlade data.
  • Möjlighet att ta bort element av vilken typ som helst frĂ„n associativa arrayer genom att tilldela litteralen 0.
  • Tillagd Ă„tgĂ€rd print för att skriva strukturerade data med typannotationer.
  • Nya inbyggda funktioner cleanpath(), d_path() och link_ntop() har lagts till.
  • TillĂ€gg av parametern "-xcpu" som gör det möjligt att koppla kontroller till specifika CPU:er.
  • TillĂ€gg av parametern "-xlockmem" för att begrĂ€nsa minnesstorleken.
  • Möjlighet att spara processens spĂ„rningsdata (USDT) mellan omstarter av dtprobed.
  • Stöd för BTF-mekanismen (BPF Type Format) som tillhandahĂ„ller typinformation för typkontroller i BPF-pseudokod.
  • Möjlighet att anvĂ€nda configure-skriptet för byggning.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster