Spot the difference: timeframe comparison with Blackfire continuous profiler

Blackfire introduces timeframe comparison, a new addition to our continuous profiling dashboard that helps you monitor and optimize resource usage by comparing two different timeframes. With intuitive visuals and detailed insights, you can easily detect changes, troubleshoot issues, and make data-driven decisions.

By Thomas di Luccio, on Oct 16, 2024

One primary use of monitoring or continuous profiling dashboards is to identify improvement opportunities. For example, you might identify bottlenecks or underperforming function calls.

But context is key when analyzing observability data. Are your findings only relevant to the observed timeframe or apply more broadly? Do your application dynamics differ under specific circumstances?

We are thrilled to announce an upgrade to the continuous profiling user experience, which now allows for the comparison of two timeframes. It allows you to understand your application dynamics in various contexts better.

For instance, you could compare two application versions, before and after a deployment, or compare rush hours with quiet times. This could shine a light on regressions that might have recently been introduced into the codebase, or some specific parts of the application that seem to prevent you from scaling correctly.

Enabling comparison mode

A toggle on the top right corner of the continuous profiling dashboard enables the comparison mode. Once the comparison is enabled, you can select two timeframes referred to as A and B. Those timeframes can overlap.

Keep in mind that continuous profiling is probabilistic observability. This means the quality of the information you get depends on how representative the data sampled is. In other words, this means the larger the selected timeframes, the better.

This series of blog posts might help you better understand the difference between deterministic and probabilistic observability and help you make the most of all the observability tools Blackfire provides.

Understanding continuous profiling visual comparison

The flamegraph provides a visual representation of how the timeframe B compares to A for the selected dimension using shades of colors. The stronger the color, the higher the resource variation.

Shades of green indicate timeframe B is consuming fewer resources than A for the selected dimension. Shades of red indicate the opposite with B consuming more resources than A.

When hovering over a span, a scale and contextual information are displayed. This ensures accessibility for all users and allows colorblind users to benefit from this feature.

What are flamegraphs already?

Your mission, should you accept it, is to browse the A and B flamegraphs until you find the answer to your question. Are you validating entirely the changes recently introduced? Have you found room for improvement in a specific script you identified zooming in the flamegraph?

Flamegraphs are composed of spans representing individual function calls. The larger the span, the higher the resource consumption for the selected dimension and timeframe. From top to bottom, you can inspect the caller-callee relationship with a span parent and its children.

From left to right, you can see the span siblings. They might share the same parent, but their position on the x-axis doesn’t mean one is executed before the other. They are sorted alphabetically. This blog post provides a deep dive into the continuous profiling dashboard to help you familiarize yourself with it.

Get started with Continuous Profiling comparison mode

Now, the ball is in your court. Head to your continuous profiling dashboard and give this feature a try. We are interested in hearing from your experience with this feature as well as with our entire continuous observability solution.

Get started with Blackfire today if you don’t have a subscription yet. It lets you monitor your application’s real-time performance and spot issues or potential problems before they reach production.

To better observability and beyond!

Thomas di Luccio

Thomas is a Developer Relations Engineer at Platform.sh for Blackfire.io. He likes nothing more than understanding the users' needs and helping them find practical and empowering solutions. He’ll support you as a day-to-day user.