SystemTap

From Wikipedia, the free encyclopedia
  (Redirected from Systemtap)
Jump to: navigation, search
SystemTap
Smileytap.svg
Developer(s) Various
Initial release 2005
Stable release 1.6 / July 25, 2011; 5 months ago (2011-07-25)
Written in C++, custom scripting
Operating system Linux
Type Tracing
License GNU General Public License
Website http://sourceware.org/systemtap/

In computing, SystemTap (stap) is the primary scripting language and tool for dynamically instrumenting running production Linux operating systems. System administrators can use SystemTap to extract, filter and summarize data in order to enable diagnosis of complex performance or functional problems.

SystemTap consists of open-source software and includes contributions from Red Hat, IBM, Intel, Hitachi, Oracle, and other community members.[1]

Contents

[edit] History

SystemTap debuted in 2005 in Red Hat Enterprise Linux 4 Update 2 as a technology preview.[2]

After 4 years in development, SystemTap 1.0 was released in 2009.[3]

As of 2011 SystemTap runs fully supported in all Linux distributions including RHEL / CentOS 5[4] since update 2, SLES 10,[5] Fedora, Debian and Ubuntu.

Tracepoints in the CPython VM and JVM were added in SystemTap 1.2.[6]

[edit] Usage

SystemTap files are saved as .stp files and are written in the SystemTap language, based on the language reference.[7] They are run with the stap command line.[8] A number of passes are done on the script before it is allowed to run, at which point the script is compiled into a kernel module and loaded. Listing modules shows each SystemTap script as 'stap_<UUID>'. The module is unloaded when the tap has finished running.

Scripts are generally based around events (such as starting or finishing a script), probe points, or kernel functions.

Some "guru mode" scripts may also have embedded C, which may be run with the -g command-line option. However, use of guru mode is discouraged, and each SystemTap release includes more probe points designed to remove the need for guru-mode taps.

[edit] Simple examples

The following script shows all applications setting TCP socket options on the system, what options are being set, and whether the option is set successfully or not:

# Show sockets setting options

# Return enabled or disabled based on value of optval
function getstatus(optval)
{
    if ( optval == 1 )
        return "enabling"
    else
        return "disabling"
}

probe begin
{
        print ("\nChecking for apps setting socket options\n")
}

# Set a socket option
probe tcp.setsockopt
{
    status = getstatus(user_int($optval))
        printf ("  App '%s' (PID %d) is %s socket option %s... ", execname(), pid(), status, optstr)
}

# Check setting the socket option worked
probe tcp.setsockopt.return
{
    if ( ret == 0 )
        printf ("success")
    else
        printf ("failed")
    printf ("\n")
}

probe end
{
        print ("\nClosing down\n")
}

Many other examples are shipped with SystemTap. There are also real-world examples of SystemTap use at the War Stories page .

[edit] Importing scripts from other tracing technologies

SystemTap can import DTrace markers to SystemTap markers providing those markers exist in RHEL.

[edit] See also

[edit] References

[edit] External links

[edit] Papers

[edit] Presentations

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages