Skip to main content


Project description

A few years ago, Brendan Gregg created the flame graph visualization. It allows to visualize a collection of sampled stack traces to discover the hotspots of an application.

The Java ecosystem is full of great performance analysis tools and profilers. They are often full featured (CPU, memory, threads, GC, monitors, etc.) and well suited for complex environments or analyses. However, quite often we only need to get the big picture of our application. This is especially true in single threaded CPU bound applications like batchs or map reduce jobs. Flamegraph really shines in this area. It is my favorite tool to quickly discover how I can enhance my jobs to make them several times faster by rewriting only a few lines of code.

hprof2flamegraph converts the output of HPROF into folded stacks which is the input format of Brendan’s FlameGraph.


Firstly, enable HPROF and run your application. CPU sampling must be enabled (not tracing). You can configure the sampling interval, the maximum stack depth, and whether if line numbers and thread information are printed. I recommend to always set them to y since they can be discarded at a latter step if needed. You never have too much information.

java -agentlib:hprof=cpu=samples,depth=100,interval=1ms,lineno=y,thread=y,file=output.hprof[...]

Secondly, use hprof2flamegraph to convert the HPROF output into the folded stacks format.

hprof2flamegraph output.hprof > output-folded.txt

Finally, use to create the final SVG graph. output-folded.txt > output.svg

Want to profile an Hadoop job? It is quite easy too. You must set the following Hadoop variables: mapred.task.profile, mapred.task.profile.params, mapred.task.profile.maps, mapred.task.profile.reduces. For example, to do it programmatically from a Java job:

Configuration conf = getConf();
conf.setBoolean("mapred.task.profile", true);
conf.set("mapred.task.profile.maps", "0");
conf.set("mapred.task.profile.reduces", "0");


The easiest way to install hprof2flamgegraph is to use the Pypi package:

pip install [--user] hprof2flamegraph

It installs a hprof2flamegraph script into the bin directory of your environment. Make sure this directory is in your PATH. The original script from Brendan is also installed (CDDL licensed).

You can also download the script from github or clone the repository. The script is standalone with Python >= 2.7 and only requires the argparse module with Python 2.6.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
hprof2flamegraph-0.0.1.tar.gz (11.1 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page