~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/profiling.txt

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-06-18 03:33:56 UTC
  • mfrom: (2527.1.1 breakin)
  • Revision ID: pqm@pqm.ubuntu.com-20070618033356-q24jtmuwbf03ojvd
Fix race in test_breakin_harder that can cause test suite hang.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
Profiling
2
2
=========
3
3
 
4
 
Using profilers
5
 
---------------
6
 
 
7
4
Bazaar has some built-in support for collecting and saving profiling
8
 
information. In the simpliest case, the ``--lsprof`` option can be used as
 
5
information. In the simpliest case, the --lsprof option can be used as
9
6
shown below::
10
7
 
11
8
  bzr --lsprof ...
12
9
 
13
10
This will dump the profiling information to stdout before exiting.
14
 
Alternatively, the ``--lsprof-file`` option can be used to specify a filename
 
11
Alternatively, the --lsprof-file option can be used to specify a filename
15
12
to save the profiling data into to. By default, profiling data saved to a
16
13
file is a pickled Python object making it possible to reload the data and
17
14
do with it what you will. For convenience though:
18
15
 
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
 
16
* if the filename ends in ".txt", it will be dumped in a text format.
 
17
 
 
18
* if the filename ends in ".callgrind", it will be converted to a format
 
19
  loadable by the KCacheGrind visualization tool.
 
20
 
 
21
Here is an example of how to use the --lsprof-file option in combination
 
22
with KCacheGrind to visualize what the "status" command is doing::
 
23
 
 
24
  bzr --lsprof-file status001.callgrind status
 
25
  kcachegrind status001.callgrind &
 
26
 
 
27
.. Note:: bzr also has a --profile option that uses the hotshot profiler
35
28
   instead of the lsprof profiler. The hotshot profiler can be useful
36
29
   though the lsprof one is generally recommended. See
37
30
   http://docs.python.org/lib/node795.html.
38
31
 
39
 
Note that to use ``--lsprof`` you must install the lsprof module, which you
40
 
can get with::
41
 
 
42
 
  svn co http://codespeak.net/svn/user/arigo/hack/misc/lsprof
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
 
 
52
 
This writes messages into ``~/.bzr.log``.
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.)
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.
 
32