Profiling¶
Using profilers¶
Bazaar has some built-in support for collecting and saving profiling
information. In the simpliest case, the --lsprof
option can be used as
shown below:
brz --lsprof ...
This will dump the profiling information to stdout before exiting.
Alternatively, the --lsprof-file
option can be used to specify a filename
to save the profiling data into to. By default, profiling data saved to a
file is a pickled Python object making it possible to reload the data and
do with it what you will. For convenience though:
if the filename ends in
.txt
, it will be dumped in a text format.if the filename either starts with
callgrind.out
or ends with.callgrind
, it will be converted to a format loadable by the KCacheGrind visualization tool.
Note that KCacheGrind’s Open Dialog has a default filter than only shows
files starting with callgrind.out
so the longer filename is usually
preferable. Here is an example of how to use the --lsprof-file
option
in combination with KCacheGrind to visualize what the status
command
is doing:
brz --lsprof-file callgrind.out.st001 status
kcachegrind callgrind.out.st001 &
Note
brz also has a --profile
option that uses the hotshot profiler
instead of the lsprof profiler. The hotshot profiler can be useful
though the lsprof one is generally recommended. See
http://docs.python.org/lib/node795.html.
Note that to use --lsprof
you must install the lsprof module, which you
can get with:
svn co http://codespeak.net/svn/user/arigo/hack/misc/lsprof
Profiling locks¶
Bazaar can log when locks are taken or released, which can help in
identifying unnecessary lock traffic. This is activated by the -Dlock
global option.
This writes messages into $XDG_CACHE_HOME/breeezy/brz.log
.
At present this only logs actions relating to the on-disk lockdir. It
doesn’t describe actions on in-memory lock counters, or OS locks (which
are used for dirstate.)
Profiling HPSS Requests¶
When trying to improve network performance, it is often useful to know
what requests are being made, and how long they are taking. The -Dhpss
global option will enable logging smart server requests, including the
time spent in each request.