prof, tprof, kprof – display profiling data
interprets files produced automatically by programs loaded using the
or other loader.
The symbol table in the
named program file
etc., according to
is read and correlated with the
For each symbol, the percentage
of time (in seconds) spent executing between that symbol
and the next
is printed (in decreasing order),
together with the time spent there and
the number of times that routine was called.
prints the dynamic call graph of the target program,
annotating the calls with the time spent in each routine
and those it calls, recursively. The output is indented
two spaces for each call, and is formatted as
is the entry point of the call,
is in milliseconds,
is the number of times that entry point was called at that
point in the call graph. If
is one, the
Normally recursive calls are compressed to keep the output brief;
prints the full call graph.
The size of the buffer
used to hold the profiling
data, by default 2000 entries,
may be controlled by setting the environment variable
If the buffer fills, subsequent function calls may not be recorded.
The profiling code provided by the linker initializes itself to profile the current pid,
producing a file called
If a process forks, only the parent will continue to be profiled. Forked children
can cause themselves to be profile by calling
prof(fn, arg, entries, what)
which causes the function fn(arg) to be profiled. When fn
is produced for the current process pid.
The environment variable
can be set to one of
to profile time measured spent in user mode, time spent in user+kernel mode, or elapsed time,
using the cycle counter, or the time in user mode using the kernel’s HZ clock. The cycle counter
is currently only available on modern PCs and on the PowerPC. Default profiling measures user
time, using the cycle counter if it is available.
is similar to
but is intended for profiling multiprocess programs.
It uses the
file to collect instruction frequency counts for the text image associated with the process,
for all processes that share that text.
It must be run while the program is still active, since the data is stored with the running program.
profiling for a given process,
echo profile > /proc/pid/ctl
and then, after the program has run for a while, execute
Since the data collected for
is based on interrupt-time sampling of the program counter,
is similar to
but presents the data accumulated by the kernel
The symbol table file, that of the operating system kernel,
and the data file, typically
must be provided.
has no options and cannot present dynamic data.