diff options
author | Jason Evans <je@fb.com> | 2016-02-24 23:35:24 (GMT) |
---|---|---|
committer | Jason Evans <je@fb.com> | 2016-02-24 23:35:24 (GMT) |
commit | 5ec703dd33b60924ec39534d3fbc234dfa01b15a (patch) | |
tree | a545f36a1957f51f5c8d7811dac46544923aeae8 | |
parent | f591d2611a311e8d100273fccfeb462c92ae9ce7 (diff) | |
download | jemalloc-5ec703dd33b60924ec39534d3fbc234dfa01b15a.zip jemalloc-5ec703dd33b60924ec39534d3fbc234dfa01b15a.tar.gz jemalloc-5ec703dd33b60924ec39534d3fbc234dfa01b15a.tar.bz2 |
Document the heap profile format.
This resolves #258.
-rw-r--r-- | doc/jemalloc.xml.in | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/doc/jemalloc.xml.in b/doc/jemalloc.xml.in index bbccabd..d7b3358 100644 --- a/doc/jemalloc.xml.in +++ b/doc/jemalloc.xml.in @@ -1191,7 +1191,8 @@ malloc_conf = "xmalloc:true";]]></programlisting> the <command>jeprof</command> command, which is based on the <command>pprof</command> that is developed as part of the <ulink url="http://code.google.com/p/gperftools/">gperftools - package</ulink>.</para></listitem> + package</ulink>. See <link linkend="heap_profile_format">HEAP PROFILE + FORMAT</link> for heap profile format documentation.</para></listitem> </varlistentry> <varlistentry id="opt.prof_prefix"> @@ -2623,6 +2624,53 @@ typedef struct { </varlistentry> </variablelist> </refsect1> + <refsect1 id="heap_profile_format"> + <title>HEAP PROFILE FORMAT</title> + <para>Although the heap profiling functionality was originally designed to + be compatible with the + <command>pprof</command> command that is developed as part of the <ulink + url="http://code.google.com/p/gperftools/">gperftools + package</ulink>, the addition of per thread heap profiling functionality + required a different heap profile format. The <command>jeprof</command> + command is derived from <command>pprof</command>, with enhancements to + support the heap profile format described here.</para> + + <para>In the following hypothetical heap profile, <constant>[...]</constant> + indicates elision for the sake of compactness. <programlisting><![CDATA[ +heap_v2/524288 + t*: 28106: 56637512 [0: 0] + [...] + t3: 352: 16777344 [0: 0] + [...] + t99: 17754: 29341640 [0: 0] + [...] +@ 0x5f86da8 0x5f5a1dc [...] 0x29e4d4e 0xa200316 0xabb2988 [...] + t*: 13: 6688 [0: 0] + t3: 12: 6496 [0: ] + t99: 1: 192 [0: 0] +[...] + +MAPPED_LIBRARIES: +[...]]]></programlisting> The following matches the above heap profile, but most +tokens are replaced with <constant><description></constant> to indicate +descriptions of the corresponding fields. <programlisting><![CDATA[ +<heap_profile_format_version>/<mean_sample_interval> + <aggregate>: <curobjs>: <curbytes> [<cumobjs>: <cumbytes>] + [...] + <thread_3_aggregate>: <curobjs>: <curbytes>[<cumobjs>: <cumbytes>] + [...] + <thread_99_aggregate>: <curobjs>: <curbytes>[<cumobjs>: <cumbytes>] + [...] +@ <top_frame> <frame> [...] <frame> <frame> <frame> [...] + <backtrace_aggregate>: <curobjs>: <curbytes> [<cumobjs>: <cumbytes>] + <backtrace_thread_3>: <curobjs>: <curbytes> [<cumobjs>: <cumbytes>] + <backtrace_thread_99>: <curobjs>: <curbytes> [<cumobjs>: <cumbytes>] +[...] + +MAPPED_LIBRARIES: +</proc/<pid>/maps>]]></programlisting></para> + </refsect1> + <refsect1 id="debugging_malloc_problems"> <title>DEBUGGING MALLOC PROBLEMS</title> <para>When debugging, it is a good idea to configure/build jemalloc with |