linux-trace-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kris Van Hees <kris.van.hees@oracle.com>
To: linux-trace-users@vger.kernel.org
Subject: [CORRECTED] RELEASE: DTrace for Linux 2.0.0-1.8
Date: Thu, 28 Oct 2021 10:49:58 -0400	[thread overview]
Message-ID: <20211028144958.GE1608@oracle.com> (raw)

[Please excuse the double posting - the previous announcement was sent out
 with the wrong version number.  Mea culpa.]

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

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!

                 reply	other threads:[~2021-10-28 14:50 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211028144958.GE1608@oracle.com \
    --to=kris.van.hees@oracle.com \
    --cc=linux-trace-users@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).