Hotspot v1.1.0 adds timeline and recording features New release of the GUI for the Linux perf profiler

Close to three months after the initial hotspot release, I’m happy to announce the release of version 1.1.0. Quick recap: Hotspot is a graphical frontend to the Linux perf profiler suite. It allows you to visually analyze perf.data files with the built-in Flame Graph and the Bottom-Up, Top-Down, or Caller-Callee data tables. It is a free open source R&D project by KDAB, you can find the code on GitHub.

Version 1.1.0 adds two important new features to this list:

An event time line which allows you to filter the results by time, thread or process A new record page to configure and run perf graphically from within hotspot. It supports both, launching a new application as well as attaching to running processes.

Additionally, we now also publish an AppImage with this release, which allows you use hotspot quickly, even on older Linux distributions – no need to compile anything anymore! You can find the release downloads on our GitHub page.

Event Timeline

The new event timeline fixes some big usability issues I have with perf report on the command line: How do you grasp the per-thread contributions to the overall performance? How do you find and inspect CPU spikes? Both features are theoretically possible with perf report , namely via the --tid, --pid and --time filter options. But using those in practice is a usability nightmare – it is especially hard to figure out what values to pass to these CLI switches initially!

Hotspot now solves this issue by visualizing the per-thread event timeline. This initial implementation is simplistic, yet already tremendously useful. It essentially just draws a timeline with horizontal bars for every event. You can zoom and filter in as you desire. Most importantly, the data views on top, i.e. the FlameGraph as well as the other data tables, will be updated automatically.

Overall, this allows you to easily find and inspect CPU spikes or per-thread cost contributions. In the future, this view will be extended to show timelines per CPU-core. Additionally, it will be extended with visualizations of the scheduler switch trace points data, if available. So look forward to hotspot v1.2 in the future, which should finally support off-CPU profiling properly!

The new graphical event timeline allows you to filter in on interesting time ranges.

Record Page

The second big new feature in hotspot v1.1 is the addition of a new record page. This enables you to use perf without typing any commands on the command line, if you may wish so. Just do everything graphically from within hotspot: Launch new applications or attach to already running processes.

The dialog is accessible from the main screen, the menu, or via the Ctrl + R shortcut. The fields remember the last used values, i.e. once you have configured one binary to launch, you can quickly re-run perf from the dialog without having to type in the command line arguments, working dir or perf options again. Also note that some of these options, like the command line arguments or working directory, are remember per-application.

The new record page allows launching a new application and profiling it with perf.

Many more improvements

While the above two new features represent the most important user-visible changes, hotspot v1.1 comes with many other improvements compared to the initial v1.0 release. Try it out and let us know what you think! Please report issues on GitHub, but we are also open to any kind of feedback through the comment field below. If you want to learn more about perf and hotspot, also consider attending one of our Linux specific profiling trainings, such as the one that took place during CppCon 2017 this year!