Skip to content
Tool to convert Linux perf files to the profile.proto format used by pprof
C++ Starlark Other
Branch: master
Clone or download
ZachMarcus Uprev to internal head; map sample callchain ips better. (#86)
* Prevent sample callchain ips that are under PERF_CONTEXT_USER getting mapped to
the kernel space.

PiperOrigin-RevId: 289475915

* Mark sample callchain ip that is not mapped to quipper space and assign it null

PiperOrigin-RevId: 291192190
Latest commit e7d6443 Feb 11, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
external Update open-source to internal head. (#80) Aug 5, 2019
.gitignore Rolling up latest changes. (#51) Apr 7, 2018
.travis.yml Pull changes from upstream. (#82) Oct 3, 2019
AUTHORS first commit Sep 21, 2016
CONTRIBUTING first commit Sep 21, 2016
CONTRIBUTORS first commit Sep 21, 2016
LICENSE PiperOrigin-RevId: 216411556 Oct 9, 2018
WORKSPACE Update open-source to internal head. (#80) Aug 5, 2019


The perf_to_profile binary can be used to turn a file, which is generated by the linux profiler, perf, into a profile.proto file which can be visualized using the tool pprof.

For details on pprof, see


Prerequisites to build

  • Install dependencies

    sudo apt-get -y install g++ git libelf-dev libcap-dev

Compile and Test

To install all dependences and build the binary, run the following commands. These were tested on Ubuntu 14.04 LTS:


  • Install bazel by following the instructions here.

  • Install dependencies and build perf_to_profile using bazel

    git clone
    cd perf_data_converter
    bazel build src:perf_to_profile

Place the perf_to_profile binary in a place accessible from your PATH (e.g. /usr/local/bin).

Running tests

  • There are a small number of tests that verify the basic functionality. To run these, after successful compilation, run:

    bazel test src:all
    bazel test src/quipper:all

Note: Executables generated using bazel build are available under the directory bazel-bin/.


  • Profile a command using perf, for example:

    perf record /bin/ls
  • Recent versions of pprof will automatically invoke perf_to_profile:

    pprof -web


We appreciate your help!

Note that perf data converter and quipper projects do not use GitHub pull requests, and that we use the issue tracker for bug reports.

You can’t perform that action at this time.