aboutsummaryrefslogtreecommitdiff
path: root/doc/ekg.mdwn
blob: 508fd2e929036fe2fcddd346b1d176081c040f40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
You can `cabal configure -fEKG` to build a git-annex that includes
the EKG remote monitoring interface.

To access the EKG control panel, go to
<http://localhost:4242/> while a git-annex command is running.

This EKG build is mostly useful for debugging resource usage problems.

[[!img ekg.png caption="git-annex webapp startup, and assistant startup scan"]]

Note that since only one process can open port 4242 at a time, running
more than one git-annex process with EKG support at the same time can
result in some "resource busy (Address already in use)" messages -- but
git-annex will continue to work.

----

## full profiling

For the really tricky memory leaks, here's how to make a profiling build of
git-annex.

1. `cabal configure` with only the flags you really need
2. `cabal build --ghc-options="-prof -auto-all -caf-all"`
  This will probably fail due to some missing profiling libraries.
  You have to get the profiling versions of all needed haskell libraries
  installed somehow.
3. Run git-annex with the special flags `+RTS -hc -p`
4. Reproduce the memory leak problem.
5. If the assistant was run, stop it.
6. `hp2ps -e8in -c git-annex.hp` to generate a .ps graph of memory usage.