~/talk

ext/profile, or How to Make Profilers Tell the Truth

Talkat RubyKaigi 2026 · 2026-04-22..04-24· [ruby, observability]
links:none on file
slides:none on file

Profilers often miss hot work because RB_profile_frames only sees real frames, so specialized instructions and inlined methods disappear; a working hack synthesize virtual frames by decoding the instruction at the PC and correctly surfaces integer plus and regex work. Heavy stack decoding moves out of the signal handler by deferring stack walking to postponed jobs, allowing caching and safe allocations. Proposal: embed an ext profiler in CRuby that emits per-sample stack events so existing tools aggregate CPU- and wall-time-correct profiles and handle ractors and thread migration.

AI-written summary · about

  1. 0:00Introduction to profiling
  2. 2:52Status quo of Ruby profilers
  3. 7:50Blind spots in stack walking
  4. 15:14Invisible inlined methods
  5. 16:41Ruby’s evolving landscape
  6. 20:31Proposal for Xprofiler
  7. 27:21Comparing profiler models
  8. 28:04Conclusion and Q&A
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.