Без опису
Alexey Alexandrov 8dff45d226 Remove stale docs, move useful ones. (#374) 7 роки тому
.github Fix style problems (#290) 7 роки тому
doc Remove stale docs, move useful ones. (#374) 7 роки тому
driver Introduce (UI).WantBrowser (#345) 7 роки тому
fuzz Add some proto files to the initial fuzz corpus. (#247) 7 роки тому
internal internal/driver: skip tests requiring tcp on js (#373) 7 роки тому
profile Improve profile filter unit tests, fix show filtering of mappings (#354) 7 роки тому
proto Remove stale docs, move useful ones. (#374) 7 роки тому
third_party Move update_d3flamegraph.sh script from the root directory. (#370) 7 роки тому
.gitignore Added an interactive web interface (#154) 7 роки тому
.travis.yml Detect when binutils are not installed on OSX and skip the test. (#352) 7 роки тому
AUTHORS first commit of OSS pprof 9 роки тому
CONTRIBUTING.md Fix style problems (#290) 7 роки тому
CONTRIBUTORS Flame Graph support on Web UI (#188) 7 роки тому
LICENSE first commit of OSS pprof 9 роки тому
README.md Minor fixes (proposal) (#241) 7 роки тому
appveyor.yml Add command-line editing support for interactive pprof (#362) 7 роки тому
pprof.go Add command-line editing support for interactive pprof (#362) 7 роки тому
test.sh Skip packages with no tests while testing. (#264) 7 роки тому

README.md

Build Status codecov

Introduction

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 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.

Building pprof

Prerequisites:

  • Go development kit. Requires Go 1.7 or newer. 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

Remember to set GOPATH to the directory where you want pprof to be installed. The binary will be in $GOPATH/bin and the sources under $GOPATH/src/github.com/google/pprof.

Basic usage

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.

Generate a text report of the profile, sorted by hotness:

% 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.

Generate a graph in an SVG file, and open it with a web browser:

pprof -web [main_binary] profile.pb.gz

Run pprof on interactive mode:

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.

Run pprof via a web interface

If the -http flag is specified, pprof starts a web server at the specified host:port that provides an interactive web-based interface to pprof. Host is optional, and is “localhost” by default. Port is optional, and is a random available port by default. -http=":" starts a server locally at a random port.

pprof -http=[host]:[port] [main_binary] profile.pb.gz

The preceding command should automatically open your web browser at the right page; if not, you can manually visit the specified port in your web browser.

Using pprof with Linux Perf

pprof can read perf.data files generated by the Linux perf tool by using the perf_to_profile program from the perf_data_converter package.

Further documentation

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.