Oracle heeft DTrace voor Linux 2.0.0-1.14 gepubliceerd.

De experimentele release van de dynamische debuggingtool DTrace voor Linux 2.0.0-1.14 is gepresenteerd, geïmplementeerd als een gebruikersproces dat gebruikmaakt van de eBPF-subsystemen en de standaard traceeringsmechanismen die door de Linux-kernel worden aangeboden. Qua functionaliteit is de eBPF-gebaseerde implementatie van DTrace vergelijkbaar met de eerste implementatie van DTrace voor Linux, uitgevoerd als een kernelmodule. De code van het project wordt verspreid onder de GPLv2-licentie.

De tool kan worden gebruikt met standaard Linux-kernels die BPF ondersteunen. Voor de werking is de library libctf vereist, die ondersteuning biedt voor het debugformaat CTF (Compact Type Format), en die is opgenomen in het binutils-pakket vanaf versie 2.40, of de library libdtrace-ctf, geporteerd vanuit Solaris. Optioneel zijn twee patches voor kernel 6.7 beschikbaar om uitgebreide mogelijkheden voor het verkrijgen van aanvullende gegevens over modules en de kernel in te schakelen.

De DTrace-technologie is ontwikkeld om dynamische traceertaken voor de kernel en eindtoepassingen in het Solaris-besturingssysteem op te lossen. DTrace stelt de gebruiker in staat om het systeemgedrag gedetailleerd te volgen en in real-time problemen te diagnosticeren. Tijdens het debuggen heeft DTrace geen invloed op de werking van de onderzochte toepassingen en weerspiegelt het niet op hun prestaties, wat een analyse van werkende systemen 'on the fly' mogelijk maakt. Een van de sterke punten van DTrace is de high-level programmeertaal D, die lijkt op AWK, waardoor het veel eenvoudiger is om traceerscripts te maken dan bij het gebruik van de voor eBPF aangeboden tools om handlers in de talen C, Python en Lua met externe bibliotheken te schrijven.

Belangrijkste mogelijkheden:

  • Beschikbare providers:
    • cpc (CPU Performance Counter) — verkrijgen van prestatiedata.
    • dtrace — handlers BEGIN, END en ERROR, die vóór of na andere controles worden aangeroepen, evenals bij het optreden van fouten.
    • fbt (Function Boundary Tracing) — het traceren van aanroepen naar kernfuncties.
    • lockstat — het traceren van de status van locks.
    • pid — het traceren van aanroepen naar functies in processen die in de gebruikersruimte draaien.
    • proc — het traceren van activiteiten gerelateerd aan processen, zoals opstarten en beëindigen (fork, exec, exit, fault).
    • profile — opslaan van prestatiedata over gespecificeerde tijdsintervallen.
    • sdt, rawtp — statische kerneltracering (SDT — Statically Defined Tracing).
    • usdt: statische applicatietracering (USDT — Userspace Statically Defined Tracing)
    • sched — volgen van CPU-hulpfunctie distributie.
    • sycall — volgen van toegang tot en terugkeer van systeemoproepen.
  • Aggregatie van verzamelde gegevens: mogelijkheid voor het toepassen van aggregatiefuncties (avg, count, llquantize, lquantize, max, min, quantize, stddev en sum) en aggregatieve acties (clear, normalize, normalize, printa). Ondersteuning voor het opslaan van de resultaten van de toepassing van aggregatiefuncties in zowel gewone als associatieve arrays.
  • Ondersteuning voor speculatieve tracing, waarmee tijdelijk gegevens kunnen worden gevolgd, met de beslissing welke gegevens moeten worden vastgelegd in de traceerbuffer en welke moeten worden afgewezen. Beschikbare functies: speculation, speculate, commit en discard.
  • Ondersteuning voor globale en lokale variabelen, TLS (Thread-Local Storage), associatieve arrays en strings.
  • Levering van ingebouwde variabelen: 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.
  • Ondersteuning voor acties: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack en usym.
  • Beschikbaarheid van ingebouwde functies: 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.
  • Aanwezigheid van datacounters die niet in traceerbuffers komen.
  • Ondersteuning voor het compileren van traceerscripts in de D-taal naar BPF-programmavormen.
  • Voorkompilatie van BPF-functies voor bibliotheekoproepen.
  • bpflog-optie voor het verkrijgen van logs voor de verificatie van geladen BPF-programma's.
  • Dynamische codegeneratie en voorkompilatie van code voor hergebruik in BPF-programma's.

Wijzigingen in de nieuwe versie:

  • In de pid-provider, gebruikt voor het volgen van processen in de gebruikersruimte, is ondersteuning toegevoegd voor het volgen van de uitvoering van instructies op basis van hun offset in de code.
  • Ondersteuning toegevoegd voor het gebruik van de functies stack() en ustack() voor de aggregatie van verzamelde gegevens.
  • Mogelijkheid om elementen van elke soort uit associatieve arrays te verwijderen door het toewijzen van het literale 0.
  • Print-actie toegevoegd voor het afdrukken van gestructureerde gegevens met typeannotaties.
  • Nieuwe ingebouwde functies cleanpath(), d_path() en link_ntop() toegevoegd.
  • De parameter „-xcpu” is toegevoegd, waarmee controles aan specifieke CPU's kunnen worden gekoppeld.
  • De parameter „-xlockmem” is toegevoegd om de geheugen grootte te beperken.
  • Er is een mogelijkheid gecreëerd om proces-tracingsgegevens (USDT) tussen herstarts van dtprobed op te slaan.
  • Ondersteuning voor het BTF-mechanisme (BPF Type Format), dat informatie biedt voor type-controle in BPF-pseudocode.
  • Mogelijkheid om een configure-script te gebruiken voor de bouw.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster