
This is a set of profiling utilities, currently targeting only linux. it includes a simple command line profiling tool, with the following characteristics:
* it is intended to be easy to install and use. no kernel modules
or changes are required for basic use. it can be used without root
access.
* it supports profiling of dynamically linked code and includes
information on time spent in dynamic libraries.
* it supports profiling of multithreaded applications.
* it generates profiles for all subprocesses started from a
shell. thus it easily can be used to profile application with multiple
processes.
* it tries to generate symbolic output. this is usually successful
for the main program, if that has debug information, i.e. was compiled
with -g. if not, you may need a debugger to fully interpret the
results. however the raw output will often give you a rough idea of
where processor time is spent.
* it currently generates "flat" profiles. the output tells you
roughly how much time was spent in a given instruction, line, or
function f. by default this does not include time spent in functions
called by f, but on platforms supported by libunwind a possible
alternative is to include callees in profile counts, thus recovering
some gprof-like functionality.
* linux kernel functions are not profiled separately. by default,
time spent in the kernel is credited to the library function which
made the kernel call.
* on itanium, it can be used to generate hardware-event-based
profiles. for example, it can tell you where most of the cache misses
occur.