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. |