pprof is a tool for visualization and analysis of profiling data.
pprof reads a collection of profiling samples in profile.proto format and generates reports to visualize and help analyze the data. It can generate both text and graphical reports (through the use of the dot visualization package).
profile.proto is a protocol buffer that describes a set of callstacks and symbolization information. A common usage is to represent a set of sampled callstacks from statistical profiling. The format is described on the src/proto/profile.proto file. For details on protocol buffers, see https://developers.google.com/protocol-buffers
Profiles can be read from a local file, or over http. Multiple profiles of the same type can be aggregated or compared.
If the profile samples contain machine addresses, pprof can symbolize them through the use of the native binutils tools (addr2line and nm).
This is not an official Google product.
Prerequisites:
-
Go development kit. Known to work with Go 1.5. Follow these instructions to install the go tool and set up GOPATH.
-
Graphviz: http://www.graphviz.org/ Optional, used to generate graphic visualizations of profiles
To build and install it, use the go get
tool.
go get github.com/google/pprof
pprof can read a profile from a file or directly from a server via http. Specify the profile input(s) in the command line, and use options to indicate how to format the report.
% pprof -top [main_binary] profile.pb.gz
Where
main_binary: Local path to the main program binary, to enable symbolization
profile.pb.gz: Local path to the profile in a compressed protobuf, or
URL to the http service that serves a profile.
pprof -web [main_binary] profile.pb.gz
If no output formatting option is specified, pprof runs on interactive mode, where reads the profile and accepts interactive commands for visualization and refinement of the profile.
pprof [main_binary] profile.pb.gz
This will open a simple shell that takes pprof commands to generate reports.
Type 'help' for available commands/options.
See doc/pprof.md for more detailed end-user documentation.
See doc/developer/pprof.dev.md for developer documentation.
See doc/developer/profile.proto.md for a description of the profile.proto format.