A Tale of Two Flamegraphs: Continuous Profiling in Ruby
summary
Pyroscope turns rbspy samples into queryable continuous profiles by adding metadata, tagging and a UI inspired by speedscope, serializing symbol names to shrink storage and aggregating 10‑second chunks with segment trees for aggregation so queries are fast. It samples stacks (100 Hz typical), stores trees and dictionaries, and supports diff flamegraphs and sandwich views. A practical win shows changing Brotli from level 11 to 2 saved ~30% CPU. Implementation claim: Pyroscope wraps rbspy and exposes continuous profiling.
AI-written summary · about
chapters (7)
- 0:00Start
- 4:32Two main types of profilers
- 7:18How Pyroscope goes from basic profiling to continuous profiling
- 10:48How we combined Ruby and Rust to equip rbspy for continuous profiling
- 14:53Continuous Profiling - Problem #1 Storage requirements
- 16:44Continuous Profiling - Problem #2 Query requirements
- 18:39Why Profiling is Important
related talks
56mContinuous Profiling the missing piece in your observability puzzle
21mFrom PyPerf to py-spy - Everything You Need to Know About Python Profilers
33mInto the flamegraph: From the primitives through advanced concepts
24mCommunity Driven Breakout Session: Continuous Profiling
41mGain a deeper understanding of your incidents: continuous profiling
31mProfiling Formats and Why You Should Care
37mThe Future of Ruby Performance Tooling
52mThe missing piece in your observability puzzle!
