table of contents
JEPROF(1) | User Manual | JEPROF(1) |
NAME¶
jeprof - analyze and print jemalloc's heap profile dumps
SYNOPSIS¶
DESCRIPTION¶
jeprof can be used to parse, analyze and generate user-readable output from jemalloc's memory profile dumps. Refer to jemalloc(3) or the jemalloc website <http://jemalloc.net/> about jemalloc and the opt.prof option.
jeprof is based on pprof(1) that is developed as part of the <https://github.com/gperftools/gperftools> gperftools package.
Common usage:
- jeprof [options] <program> <profiles>
- Interactive mode. <profiles> is a space separated list of profile names.
- jeprof [options] <symbolized-profiles>
- <symbolized-profiles> is a list of profile files where each file contains the necessary symbol mappings as well as profile data (likely generated with --raw).
- jeprof [options] <profile>
- <profile> is a remote form. Each name can be:
- /path/to/profile
- a path to a profile file
- host:port[/<service]>
- a location of a service to get the profile from.
/<service> can be /pprof/heap, /pprof/profile, /pprof/pmuprofile, /pprof/growth, /pprof/contention, /pprof/wall, /pprof/censusprofile, or /pprof/filteredprofile.
For instance:
If /<service> is omitted, the service defaults to /pprof/profile (CPU profiling).
- jeprof --symbols program
- Maps addresses to symbol names. In this mode, stdin should be a list of library mappings, in the same format as is found in the heap- and CPU-profile files (this loosely matches that of /proc/self/maps on Linux), followed by a list of hex addresses to map, one per line.
OPTIONS AND ARGUMENTS¶
Options¶
- --cum
- Sort by cumulative data.
- --base=base
- Subtract <base> from <profile> before display.
- --interactive
- Run in interactive mode. (interactive "help" gives help) [default]
- --seconds=n
- Length of time for dynamic profiles. [default=30 secs]
- --add_lib=file
- Read additional symbols and line info from the given library.
- --lib_prefix=dir
- Comma separated list of library path prefixes.
Reporting granularity¶
- --addresses
- Report at address level.
- --lines
- Report at source line level.
- --functions
- Report at function level. [default]
- --files
- Report at source file level.
Output type¶
- --text
- Generate text report.
- --callgrind
- Generate callgrind format to stdout.
- --gv
- Generate Postscript and display.
- --evince
- Generate PDF and display.
- --web
- Generate SVG and display.
- --list=regexp
- Generate source listing of matching routines.
- --disasm=regexp
- Generate disassembly of matching routines.
- --symbols
- Print demangled symbol names found at given addresses.
- --dot
- Generate DOT file to stdout.
- --ps
- Generate PostScript to stdout.
- Generate PDF to stdout.
- --svg
- Generate SVG to stdout.
- --gif
- Generate GIF to stdout.
- --raw
- Generate symbolized jeprof data (useful with remote fetch).
Heap-profile options¶
- --inuse_space
- Display in-use (mega)bytes. [default]
- --inuse_objects
- Display in-use objects.
- --alloc_space
- Display allocated (mega)bytes.
- --alloc_objects
- Display allocated objects.
- --show_bytes
- Display space in bytes.
- --drop_negative
- Ignore negative differences.
Contention-profile options¶
- --total_delay
- Display total delay at each region. [default]
- --contentions
- Display number of delays at each region.
- --mean_delay
- Display mean delay at each region.
Call-graph options¶
- --nodecount=n
- Show at most so many nodes. [default=80]
- --nodefraction=f
- Hide nodes below f*total. [default=.005]
- --edgefraction=f
- Hide edges below f*total. [default=.001]
- --maxdegree=n
- Max incoming/outgoing edges per node. [default=8]
- --focus=regexp
- Focus on backtraces with nodes matching regexp.
- --thread=n
- Show profile for thread n.
- --ignore=regexp
- Ignore backtraces with nodes matching regexp.
- --scale=n
- Set GV scaling. [default=0]
- --heapcheck
- Make nodes with non-0 object counts (i.e. direct leak generators) more visible.
- --retain=regexp
- Retain only nodes that match regexp.
- --exclude=regexp
- Exclude all nodes that match regexp.
Miscellaneous¶
- --tools=prefix or --tools=binary:fullpath[,...]
- Path for object tool pathnames.
- --test
- Run unit tests.
- --help
- This message.
- --version
- Version information.
ENVIRONMENT¶
The following environment variables affect the execution of jeprof:
- JEPROF_TMPDIR
- Profiles directory. Defaults to $HOME/jeprof.
- JEPROF_TOOLS
- Prefix for object tools pathnames.
EXAMPLES¶
- jeprof /bin/ls ls.prof
- Enters interactive mode.
- jeprof --text /bin/ls ls.prof
- Generates one line per procedure.
- jeprof --web /bin/ls ls.prof
- Displays annotated call-graph in web browser.
- jeprof --gv /bin/ls ls.prof
- Generates annotated call-graph and displays via gv.
- jeprof --gv --focus=Mutex /bin/ls ls.prof
- Restrict to code paths that involve an entry that matches Mutex.
- jeprof --gv --focus=Mutex --ignore=string /bin/ls ls.prof
- Restrict to code paths that involve an entry that matches Mutex and does not match string.
- jeprof --list=getdir /bin/ls ls.prof
- Generates disassembly listing of all routines with at least one sample that match getdir(). The listing is annotated with the flat and cumulative sample counts at each line.
- jeprof --disasm=getdir /bin/ls ls.prof
- Generates disassembly listing of all routines with at least one sample that match getdir(). The listing is annotated with the flat and cumulative sample counts at each PC value.
- jeprof http://localhost:1234/
- Enters interactive mode.
- jeprof --text localhost:1234
- Outputs one line per procedure for localhost:1234.
- jeprof --raw localhost:1234 > ./local.raw; jeprof --text ./local.raw
- Fetches a remote profile for later analysis and then analyzes it in text mode.
SEE ALSO¶
2019-01-12 | jemalloc 5.1.0_0 |