SystemTap is distributed with a number of command line tools that allow you to monitor the activities of the system. The stap
command reads probing instructions from a SystemTap script, translates these instructions into C code, builds a kernel module, and loads it into the running Linux kernel. The staprun
command runs SystemTap instrumentation, that is, a kernel module built from SystemTap scripts during a cross-instrumentation.
2.3.1. SystemTap Flight Recorder Mode
SystemTap's flight recorder mode allows you to run a SystemTap script
for long periods of time and just focus on recent output. The flight
recorder mode limits the amount of output
generated.
There are two variations of the flight recorder mode:
in-memory and file mode.
In both cases, the SystemTap script runs as a
background process.
2.3.1.1. In-memory Flight Recorder
When flight recorder mode is used without a
file name, SystemTap uses a buffer in kernel memory to store the output of the
script. Once the SystemTap instrumentation module is loaded and the probes start
running, the instrumentation detaches and is put in the background. When
the interesting event occurs, you can reattach to the instrumentation to see
the recent output in the memory buffer and any continuing output.
To run a SystemTap script by using the flight recorder in-memory mode, run the stap
command with the -F
command line option:
stap -F iotime.stp
Once the script starts, stap
prints a message similar to
the following to provide you with the command to reconnect to the running
script:
Disconnecting from systemtap module.
To reconnect, type "staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556"
When the interesting event occurs, run the following command to connect
to the currently running script, output the recent data in the memory buffer,
and get continuing output:
staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556
By default, the kernel buffer is 1MB in size. You can increase this value by
using the -s
option with the size in megabytes (rounded up to the
next power over 2) for the buffer. For example, -s2
on the
SystemTap command line would specify 2MB for the buffer.
2.3.1.2. File Flight Recorder
The flight recorder mode can also store data to files. You can control the number and size of
the files kept by using the -S
option followed by two
numerical arguments separated by a comma: the first argument is the maximum size
in megabytes for the each output file, the second argument is the number of
recent files to keep. To specify the file name, use the -o
option followed by the name. SystemTap automatically adds a number suffix to the file name
to indicate the order of the files.
The following command starts SystemTap in file
flight recorder mode with the output going to files named
/tmp/pfaults.log.[0-9]+
, each
file 1MB or smaller, and keeping latest two files:
stap -F -o /tmp/pfaults.log -S 1,2 pfaults.stp
The command prints the process ID to standard output. Sending a SIGTERM to
the process terminates the SystemTap script and stops the data collection. For
example, if the previous command listed 7590 as the process ID, the following
command would stop the SystemTap script:
kill -s SIGTERM 7590
In this example, only the most recent two files generated by the script are
kept: SystemTap automatically removes older files. As a result, the
ls -sh /tmp/pfaults.log.*
command lists two files:
1020K /tmp/pfaults.log.5 44K /tmp/pfaults.log.6
To examine the latest data, read the file with the highest number, in this case
/tmp/pfaults.log.6
.