Features/SystemtapMoreStaticProbes

= Systemtap Static Probes =

WORK IN PROGRESS: Currently a copy of Features/SystemtapStaticProbes, will turn into a new feature page for f14. SHOULD BE SPLIT INTO SEPARATE FEATURES: Make them individually for interested/participating packages

Summary
Systemtap allows event tracing of programs when they have static probes inserted. This allows for tracing specifics of an application on a higher level that is meaningful to the application user so they don't have to know the exact source code details for tracing what is happening.

Owner

 * Name: Mark Wielaard


 * email: mjw@redhat.com

Current status

 * Targeted release: Fedora 14
 * Last updated: 22 Feb 2009
 * Percentage of completion: 10%, work based on F13 feature.
 * See under scope for individual package status.

TODO

 * Some experiments showed some greater than expected impact on performance in the dormant case. So for each package identified we need to do some benchmarking to make sure there is zero overhead in to normal case. (Add any relevants benchmarks to the scopes section under the relevant package please).

Detailed Description
By packaging a new version of systemtap, that enables programs that already have static dtrace probe markers in their sources and by making those packages build depend on the new systemtap-sdt-devel package and recompiling them with probe points enabled, users of those packages will be able to trace any high level events that these packages provide.

Benefit to Fedora
It will be easier for developers and users to observe what is really happening on their system on a higher (application) level.

Scope

 * Work with upstream to identify any issues with the new capabilities while we activate probes in packages.
 * Identify packages that already include static user probes (see below)
 * Work with package maintainer to enable them in the Fedora build spec file.
 * Add documentation on enabled probes and how to use them with a systemtap tapset.

Currently identified packages:

See also the F13 feature for java, python. tcl and postgresql work that could be expanded.

xorg-x11-server

 * Need tweaks to systemtap to gen proper header from .d file (should be fixed with systemtap 1.1 package).
 * Add patch from upstream docs

Firefox
Tracking bug: https://bugzilla.redhat.com/show_bug.cgi?id=496113
 * firefox-3.1-0.6 (upstream docs) - rajan
 * Profile Firefox using SystemTap on DTrace probes: ProfilingFirefox

mysql

 * mysql 6.0.8: really new alpha version from mysql.com has probes. However, the version in fedora 5.0.67 doesn't. A backport would be required. Won't be in next fedora

apachetop/httpd

 * apachetop-0.12.6 (newer httpd have patches directly - note needs some build tweaking)

Perl
perl-5.10.0: implemented as an out-of-tree patch to the core (5.10.1 has some, see INSTALL)

PHP

 * php-5.2.8: implemented as an add-on module (shared library listed in /etc/php.ini) that intercepts internal php interpreter function pointers and wraps those calls with markers

Ruby

 * ruby-1.8.6-p287: similar to php, but richer & far more complicated

See http://ruby-dtrace.rubyforge.org/

Haskell

 * ghc very recently got some static probe support see http://hackage.haskell.org/trac/ghc/wiki/DTrace (not tried to build yet).
 * darcs patch

How To Test
Whether systemtap and static markers are working in general can be tested by installing systemtap, kernel-debuginfo and the systemtap-testsuite. Running sudo make installcheck in /usr/share/systemtap/testsuite

When applications get static markers enabled we should add them to a testing page listing:
 * Package install instructions.
 * Setup and sample run of the application
 * A reference to the probe names.
 * And an simple example stap invocation listing markers that can be enabled.

Question: Is there a convention/template for adding such test pages for test days? Answer: https://fedoraproject.org/wiki/QA/Test_Days/Create

User Experience
For packages that have static probes enabled users will be able to trace high-level events, like for example database transactions, through stap.

Dependencies

 * Might need some coordination with gcc (for debug info output) and elfutils (for grokking the debuginfo output). But this is mostly done upstream already.
 * Any package wishing to expose existing probes in its (upstream) sources depending on systemtap-sdt-devel and adding an --enable-dtrace or equivalent to its spec file.


 * Not required for this feature, but since systemtap uses debuginfo, this feature is enhanced by the Debug Info Revamp Feature.

Contingency Plan
Even if all the tracing will not work, packages that are converted to provide static probes will not be impacted since the probe points have (near) zero overhead, so in the worse case some packages were recompiled to enable the feature, but users will still not be able to use it.

Documentation
The upstream wiki is the best description for now http://sourceware.org/systemtap/wiki/UsingStaticUserMarkers the systemtap list has an example on converting a package http://sourceware.org/ml/systemtap/2009-q1/msg00140.html

While working on this feature this section will be expanded to list packages that have probe points enabled and pointers to (upstream) package documentation on the probe names and semantics like for postgresql http://www.postgresql.org/docs/8.2/static/dynamic-trace.html

Release Notes
Systemtap has been extended to support user space tracing, and in particular to support static (dtrace compatible) markers enabled in various programs in Fedora 12. This enables users, developers and administrators a high level overview of what is going on with their system or deep down in a specific program or subsystem.

Systemtap comes with a tutorial, a language reference manual, a tapsets reference and an examples directory under /usr/share/doc/systemtap-?.?/


 * TODO: Should have a list of which packages were enabled with markers when finished.

Comments and Discussion

 * See Talk:Features/SystemtapStaticProbes