Oracle Continues Building DTrace For Linux Atop BPF
More than a decade ago Linux users tended to be envious of Sun Microsystems' Solaris for ZFS and DTrace as the two most interesting technical selling points of the platform. In that time OpenZFS is now extremely vibrant for offering ZFS on BSD and Linux systems while DTrace is barely brought up these days. This tracing framework originally developed for Solaris was fantastic back in the day but over the years Linux has stepped up its game with various efforts. Now as we hit the end of 2020, Oracle engineers continue working on bringing better DTrace support to Linux.
In recent years Oracle has been working on DTrace for Linux with a focus on DTrace for Oracle Linux / its "Unbreakable Enterprise Kernel". Their kernel-side work has never been upstreamed and while they do have a GitHub repository its usage doesn't seem to be very prevalent outside of the Oracle ecosystem.
Oracle engineers have been building their DTrace Linux code off (e)BPF, which has been one of the technologies that moved developers past the era of dreaming about DTrace on Linux. There's also been LTTng, ftrace/ltrace/strace, and other tracing and debug efforts over the past decade to address the void when DTrace wasn't around on Linux.
Oracle engineer Kris Van Hees presented at this week's Open-Source Summit Europe on their DTrace efforts for Linux and making it full-featured while leveraging BPF.
This year the Oracle team hit version 2.0.0 of their DTrace code on Linux that is now BPF-powered and supports more features than their previous releases. Among the roadblocks they have encountered in their work has been the lack of BPF code sharing at the kernel level, no memory or string functions with BPF, no loops in BPF, and scalability issues.
In any case, for those interested in DTrace on Linux as we approach 2021, more details can be learned from this PDF slide deck from Open-Source Summit Europe 2020. The latest out-of-tree code for DTrace on Linux continues to be developed via GitHub.