New and Improved Binary Filtering in Icicle Graphs

We've revamped our filtering by binary feature to be more intuitive and functional!

June 11, 2024

We're excited to introduce a revamp of the Binary Filtering feature on Polar Signals Cloud. This enhancement is a direct response to user feedback, aiming to improve the overall user experience by providing a more intuitive and efficient way to analyze profiling data.

When looking at the icicle graph on Polar Signals Cloud, and with the help of the binary legend, users can identify all the binaries that are in a profile as well as visually associate the frames in the icicle graph with their respective binaries.

The binary legend expanded showing a list of binaries
The binary legend expanded showing a list of binaries

Previously, clicking on a binary in the legend would simply highlight that binary, making it stand out visually. While useful, we realized this approach fell short of what users expected. We discovered that users had an expectation that clicking on a binary in the legend filters all data down to only show that binary rather than highlighting.

With the latest improvements to the Binary Filtering feature, clicking on a binary in the legend now filters all data to show only the selected binary! This means users can immediately focus on the specific binary of interest without sifting through unrelated data.

What has changed?

With this new update, the binary filter now works in multiple ways, depending on which workflow you're using.

Workflow #1: Show me all data that belongs to a binary.

This workflow can be useful when you want to only see data in the icicle graph for a particular binary. In the screenshot, we want to see only frames that belong to the interpreter binary (a virtual binary in this case representing interpreted Python frames).

The icicle graph with the binary legend shown
The icicle graph with the binary legend shown

By clicking on the interpreter binary, the icicle graph has been filtered to only display frames with the interpreter binary. This can be particularly useful when analyzing the data and would like to remove any distractions.

The icicle graph now filtered to only display frames with the interpreter binary
The icicle graph now filtered to only display frames with the interpreter binary

Workflow #2 - Show me all the data except this particular binary

This workflow can be useful when you want to only see all data in the icicle graph except for a particular binary. In the screenshot below, we want to see all frames except the libpython3.11.so.1.0 binary. To do this simply right-click on the frame with the binary you wish to hide.

The right-click menu on the icicle graph showing the option to hide a binary
The right-click menu on the icicle graph showing the option to hide a binary

And voila all frames with the libpython3.11.so.1.0 binary are now hidden. This is especially useful for Python workloads that call out to native extensions, so just viewing interpreted frames is not quite right, but just hiding the Python runtime. This means other native extensions like libcuda or pytorch would still be visible.

All the frames with the libpython3.11.so.1.0 binary are now hidden in the icicle graph
All the frames with the libpython3.11.so.1.0 binary are now hidden in the icicle graph

And what's even good about this flow? You can hide multiple binaries at a time! Using the same icicle graph as above, we also want to hide the libc.so.6 frames.

The right-click menu on the icicle graph showing the option to hide the libc.so.6 binary
The right-click menu on the icicle graph showing the option to hide the libc.so.6 binary

And now we see the libc.so.6 frames are also hidden as seen below.

To get the icicle graph back to its initial state, there's a "Reset Legend" button to reset the icicle graph.

The Reset Legend button resets the icicle graph to the initial state
The Reset Legend button resets the icicle graph to the initial state

Lastly, we previously had the "Runtimes" dropdown in the icicle graph toolbar which also acted as a filter to filter for frames but it was specific to Ruby, Python, and Interpreted binaries. We removed this in favor of the new and improved binary filtering which is a much better to filter for those frames without being restricted. The new approach also means that the product is ready for any new runtime that it doesn't yet have a direct integration with.

At the core of this update is our commitment to enhancing user experience based on feedback from our customers. We believe that the improved Binary Filtering feature will significantly improve your ability to analyze and act on profiling data.

Try out this new functionality with our free 14-day trial and let us know what you think on our Discord. We would love to hear your feedback!

Discuss:
Sign up for the latest Polar Signals news