~bzr-pqm/bzr/bzr.dev

2493.2.2 by Ian Clatworthy
Incorporate feedback from Robert Collins
1
Profiling
2
=========
3
2654.2.1 by Ian Clatworthy
Dump profiling data for KCacheGrind if the filename starts with callgrind.out
4
Using profilers
5
---------------
6
2493.2.2 by Ian Clatworthy
Incorporate feedback from Robert Collins
7
Bazaar has some built-in support for collecting and saving profiling
2654.2.1 by Ian Clatworthy
Dump profiling data for KCacheGrind if the filename starts with callgrind.out
8
information. In the simpliest case, the ``--lsprof`` option can be used as
2493.2.2 by Ian Clatworthy
Incorporate feedback from Robert Collins
9
shown below::
10
11
  bzr --lsprof ...
12
13
This will dump the profiling information to stdout before exiting.
2654.2.1 by Ian Clatworthy
Dump profiling data for KCacheGrind if the filename starts with callgrind.out
14
Alternatively, the ``--lsprof-file`` option can be used to specify a filename
2493.2.2 by Ian Clatworthy
Incorporate feedback from Robert Collins
15
to save the profiling data into to. By default, profiling data saved to a
16
file is a pickled Python object making it possible to reload the data and
17
do with it what you will. For convenience though:
18
2654.2.1 by Ian Clatworthy
Dump profiling data for KCacheGrind if the filename starts with callgrind.out
19
* if the filename ends in ``.txt``, it will be dumped in a text format.
20
21
* if the filename either starts with ``callgrind.out`` or ends with
22
  ``.callgrind``, it will be converted to a format loadable by the
23
  KCacheGrind visualization tool.
24
25
Note that KCacheGrind's Open Dialog has a default filter than only shows
26
files starting with ``callgrind.out`` so the longer filename is usually
27
preferable. Here is an example of how to use the ``--lsprof-file`` option
28
in combination with KCacheGrind to visualize what the ``status`` command
29
is doing::
30
31
  bzr --lsprof-file callgrind.out.st001 status
32
  kcachegrind callgrind.out.st001 &
33
34
.. Note:: bzr also has a ``--profile`` option that uses the hotshot profiler
2493.2.2 by Ian Clatworthy
Incorporate feedback from Robert Collins
35
   instead of the lsprof profiler. The hotshot profiler can be useful
36
   though the lsprof one is generally recommended. See
37
   http://docs.python.org/lib/node795.html.
38
2654.2.1 by Ian Clatworthy
Dump profiling data for KCacheGrind if the filename starts with callgrind.out
39
Note that to use ``--lsprof`` you must install the lsprof module, which you
2545.1.2 by Martin Pool
Explain where to get lsprof (John, Alexander)
40
can get with::
2493.2.2 by Ian Clatworthy
Incorporate feedback from Robert Collins
41
2545.1.2 by Martin Pool
Explain where to get lsprof (John, Alexander)
42
  svn co http://codespeak.net/svn/user/arigo/hack/misc/lsprof
2555.3.7 by Martin Pool
Docs on -Dlock
43
44
45
Profiling locks
46
---------------
47
48
Bazaar can log when locks are taken or released, which can help in
49
identifying unnecessary lock traffic.  This is activated by the ``-Dlock``
50
global option.
51
2654.2.1 by Ian Clatworthy
Dump profiling data for KCacheGrind if the filename starts with callgrind.out
52
This writes messages into ``~/.bzr.log``.
2555.3.7 by Martin Pool
Docs on -Dlock
53
At present this only logs actions relating to the on-disk lockdir.  It 
54
doesn't describe actions on in-memory lock counters, or OS locks (which
55
are used for dirstate.)
2664.4.7 by John Arbash Meinel
Add NEWS and doc/developers/profiling.txt entries from Ian's feedback
56
57
58
Profiling HPSS Requests
59
-----------------------
60
61
When trying to improve network performance, it is often useful to know
62
what requests are being made, and how long they are taking. The ``-Dhpss``
63
global option will enable logging smart server requests, including the
64
time spent in each request.