[DTrace-devel] RELEASE: DTrace for Linux 2.0.0-1.8

Jose E. Marchesi jose.marchesi at oracle.com
Thu Oct 28 07:45:54 PDT 2021


> We are happy to announce the availability of the latest development 
> version of DTrace for Linux (2.0.0-1.8).

Congrats! :)

>
> This new version is based on BPF and other Linux kernel tracing features 
> and is implemented entirely as a userspace application.
>
> The functionality is still limited in comparison to the kernel module 
> based version of DTrace for Linux (currently at version 1.2.1-1).  
> Development continues in an incremental fashion to make the full feature 
> set of DTrace available using existing kernel features.
>
> WHERE TO FIND IT?
>
> The new version of DTrace for Linux is available at:
>      https://github.com/oracle/dtrace-utils/tree/2.0-branch-dev
>
> The most recent release tag is 2.0.0-1.8.
>
> FEATURES
>
>    - BEGIN and END probe (with full support for the expected semantics).
>    - ERROR probe support.
>    - Function Boundary Tracing (FBT) probes.
>    - System call entry and exit probes.
>    - Timer-based profile-* and tick-* probes.
>    - Statically Defined Tracing (SDT) probes for kernel tracepoints.
>    - Arguments for SDT probes can be retrieved with arg0-arg9.
>    - pid provider support for userspace function boundary tracing.
>    - Aggregated data collection support.
>    - Aggregation functions: avg, count, llquantize, lquantize, max, min,
>      quantize, stddev, and sum.
>    - Aggregation actions: normalize() and denormalize().
>    - Pretty-printing for aggregations using the printa() action.
>    - Support for local and global variables with storage sizes greater
>      than 8 bytes.  This adds struct and union support for local and global
>      variables.
>    - Various features to support stack tracing.
>    - Direct compilation of D source code into BPF programs.
>    - Efficient use of pre-compiled BPF functions for library functions.
>    - A bpflog option to request the BPF verifier log for loaded programs.
>    - BPF program linking of dynamically generated code and pre-compiled code
>      to facilitate code sharing and code re-use.
>    - Improved integrated disassembler for generated BPF code at the
>      clause and program level (-S in combination with the new -xdisasm=#\
>      option).
>    - Improved trace data buffer handling based on memory mapped perf event
>      ring-buffers.
>    - Deferred creation of kernel level probes.  Listing available probes 
> does
>      not require them to be created at the kernel level.
>
>    - [NEW] Speculative tracing: speculation(), speculate(), commit(), and
>      discard().
>    - [NEW] Nearly complete support for strings: string constants in D clauses,
>      assignment, built-in variables, comparison operators, trace(), strlen(),
>      strchr(), strrchr(), index(), rindex(), strstr(), strjoin(), substr(),
>      and lltostr().
>    - [NEW] Host/network byte order conversion: htonl(), htonll(), htons(),
>      ntohl(), ntohll(), and ntohs().
>    - [NEW] Symbol resolving for compressed kernel modules.
>    - [NEW] Support to run dtrace under valgrind.
>
> DEPENDENCIES
>
> DTrace for Linux depends on libctf (part of newer binutils) -or- 
> libdtrace-ctf.  While libctf is preferred, building against 
> libdtrace-ctf is fully supported.  It can be found at:
>      https://github.com/oracle/libdtrace-ctf
>
> DTrace for Linux makes use of BPF library functions that are compiled at 
> build time.  It depends on BPF support in GCC and binutils to generate 
> the pre-compiled BPF function library.
>
> DTrace for Linux makes use of 3 additional features that are not 
> commonly available in the Linux kernel:
>
>    - CTF data generation at compile time: this provides important datatype
>      information for kernel and kernel module symbols.
>
>    - waitfd() system call: this provides a mechanism to monitor for state
>      changes of processes that are being traced.
>
>    - /proc/kallsyms module grouping support: this adds annotation with module
>      names to all symbols that are part of a kernel module even if the module
>      is configured to be compiled into the kernel proper.  This allows for
>      consistent ways to refer to probes by module and function (or probe) name.
>
> These additional support features for tracing are available at:
>      https://github.com/oracle/dtrace-linux-kernel/tree/v2/5.14.9
>
> Please consider joining our development list: dtrace-devel at oss.oracle.com
>
>      Enjoy!



More information about the DTrace-devel mailing list