After having made numerous attempts at having the Systemtap's project comparison corrected to reflect the reality, that were ignored, I recreated chart here with corrections and added a few more points of comparison.
|
|
Systemtap |
DTrace |
|---|---|---|
|
License |
GPL |
CDDL |
|
Operating System Support |
Linux |
Solaris, FreeBSD, OSX, netBSD (is planned) |
|
Processor Support |
Wide (as per kprobes: x86, x86_64, ppc64, ia64, s390, sparc?, ...) |
X86, x86_64, ultrasparc, ppc? |
|
kernel coupling ("upstream" lock-step) |
Little |
Not an issue for Solaris (built in, full support) Lot |
|
Core Developer s |
IBM, RedHat. Some community support |
Sun, Apple, Freebsd, community support |
|
Development began |
2005 |
2001 |
|
Ongoing Development |
Rapid |
Mature, normal rate |
|
Target audience |
Development. Users, sysadmins |
Kernel developers, userland developers, sysadmins, users |
|
Actual audience |
Kernel Developers |
Kernel developers, userland developers, sysadmins, users |
|
Target usage |
Debugging, tracing, profiling |
Debugging, tracing, profiling |
|
Language |
|
|
|
Style |
Scripting |
Scripting |
|
Full control structures |
Yes |
No ((conditionals using ? : ) |
|
Variable typing |
Implicit, infered |
Implicit |
|
Complex report generation |
Yes |
Yes |
|
Scalable aggregates |
Yes |
Yes |
|
Thread-local variables |
Yes (from first principles via tid-indexed auxiliary arrays) |
Yes |
|
Speculative tracing |
made redundant by available control structures |
Yes |
|
Binary tracing (sends binary formatted packets from kernel to userland |
Yes |
? (unimportant to the user) |
|
early boot tracing |
Not yet |
Yes |
|
Probe execution |
Optimized native code |
Interpreted bytecodes |
|
probing capability |
|
|
|
Number of possible probe points |
Unlimited (currently limited to every line in the kernel, no userland probles or static probe points by default) |
Unlimited (50,000 kernel and static probe points, probe any line of userspace code) |
|
Maximum tested probing points |
50,000 active probe test fails |
500,000 active probe test works as expected. |
|
probe arbitrary points in code (function entry, exit, interior) |
Yes ( currently limited to kernel space) |
Yes (kernel limited to static probe points and kernel function entry and exit, userland can probe any line of code) |
|
probe dynamically loaded kernel objects |
Yes |
Yes |
|
Probe dynamically loaded userland libraries |
N/A ( no userland probes) |
Yes |
|
probe user-space programs |
Soon |
Yes |
|
statically inserted probe points, kernel side |
Yes (STP_MARK) |
Yes (DTRACE_PROBE) |
|
statically inserted probe points, user side, e.g. interpretive languages |
Not yet |
Yes (DTRACE_PROBE) |
|
timer-based probing |
Yes |
Yes |
|
hardware performance counter based probing |
Coming soon |
Coming soon |
|
Safety |
|
|
|
time-limited probe handler execution |
Yes (statement counting) |
Yes (implied by language restriction) |
|
non-blocking, atomic probe handlers |
Yes ( may be over ridden, at the cost of safety) |
Yes |
|
space-limited execution |
Yes |
Yes |
|
division-by-zero protection |
Yes |
Yes |
|
null pointer dereferencing protection |
Yes |
Yes |
|
means available to bypass protection for advanced users |
yes (guru mode, embedded-C) |
limited (predefined "destructive" actions available) |
|
translate-time error checks |
Many |
Many |
|
run-time error checks performed by |
automatically generated C code |
Byte code interpreter |
|
use by unprivileged users |
for now, sudo all-or-nothing |
graduated access by privilege level |
|
Actual Usage: |
|
|
|
Number of active users |
hundreds |
10's of thousands |
| Tested in enterprise production enviroment |
Extermely limited |
Fully tested and trusted |
|
Number of real world problems solved |
few |
1000's |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Links
http://sources.redhat.com/systemtap/wiki/SystemtapDtraceComparison Original comparison
http://docs.sun.com/app/docs/doc/817-6223 Dtrace Guide
http://learningsolaris.com/docs/dtrace_tips_public.pdf Advanced Dtrace guide
DTrace USENIX paper
What is DTrace
DTrace Mailing list chart discuss thread
Dtrace Mailing list chart discuss thread #2
Sytemtap mailing list thread