Man page - jeprof(1)

Packages contains this manual

Manual

JEPROF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS AND ARGUMENTS
Options
Reporting granularity
Output type
Heap-profile options
Contention-profile options
Call-graph options
Miscellaneous
ENVIRONMENT
EXAMPLES
SEE ALSO

NAME

jeprof - analyze and print jemalloc’s heap profile dumps

SYNOPSIS

jeprof [ options ] < program > < profiles >
jeprof
[ options ] < symbolized-profiles >
jeprof
[ options ] < profile >
jeprof
--symbols program

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:

jeprof http://myserver.example.com:80/pprof/heap

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.

--pdf

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

jemalloc (3)