Linux perf trace visualizer


HPerf reads a Linux perf trace (perf.data) and annotates the corresponding disassembly. This is similar to perf-report / perf-annotate, but with a GUI, a different layout, and additional features.

Download hperf 1.0. Live demo.


Hotspot pinpointing

Branch stack statistics

Requires perf record -b.

Assembly and source visualization

How it works

The hperf command reads a perf.data trace file and outputs a single self-contained html file (with both data and a javascript UI). The UI can be customized with user-provided css.


HPerf is well suited for long perf traces, but generation may be slow with large binaries. This is because it will get from objdump the full disassembly of all the DSOs encountered in the trace, and all of it needs to fit in memory. Trace samples are then counted against their corresponding instruction, allowing for arbitrarily long traces. Note that the output will contain the disassembly of all hotspots (plus some context) and the content of all corresponding source files.





Usage: hperf [options]


  -i   file         input file, produced by perf-record (default: perf.data)
  -o   file         output file (default: report.html)
  -s   count[%%]    minimum number of samples per insn (default: 1)
  -t   count[%%]    minimum total number of samples per hotspot (default: 2)
  -c   n            merge hotspots separated by up to n insn (default: 5)
  -d   n            output n insn before and after hotspots (default: 100)
  -S   file         replacement css file path (default: none)
  -A   file         additional css file path (default: none)
  -T   theme        initial theme: 'dark' or 'light' (default: light)


Laurent Poirrier