Performance Engineering · Cluster

Profiling

Sampling, instrumentation, and flame graphs.

  1. 01 How Sampling Profilers Turn Timer Interrupts into Execution Profiles Why a profiler interrupts rather than instruments, what each sample records, and how timer frequency and signal delivery bias the result. foundational · Mar 16, 2026
  2. 02 How Many Samples a Profile Needs Before Its Numbers Mean Anything Sampling profiles are binomial estimates, not measurements; the arithmetic that turns sample counts into confidence intervals, and the differences a run can actually resolve. foundational · Sep 20, 2025
  3. 03 Mapping Sampled Addresses Back to Functions and Source Lines A sample records a virtual address; turning it into a function name, a file, and a line number requires load addresses, symbol tables, and debug information that frequently disagree. foundational · Sep 22, 2026
  4. 04 Stack Unwinding With and Without Frame Pointers How a profiler recovers a call chain from registers and memory, why omitting frame pointers breaks the cheap method, and what DWARF call-frame information costs instead. intermediate · Apr 26, 2026
  5. 05 Building a Flame Graph from a Set of Stack Samples Flame graphs are a sorted trie of stack prefixes; the merge, the sort, and the width computation each decide what the picture can and cannot show. intermediate · Mar 1, 2023
  6. 06 Counting Function Calls Without Losing the Call Count to Inlining Entry-point instrumentation gives exact invocation counts and a cost model that sampling cannot; inlining, tail calls, and recursion each break the correspondence between hooks and source functions. intermediate · Oct 12, 2023
  7. 07 Measuring Time a Thread Spends Blocked Instead of Running on-CPU sampling cannot see waiting; reconstructing blocked time requires scheduler tracepoints, state transitions, and a model of what "running" excludes. intermediate · Jan 13, 2026
  8. 08 Choosing a Workload Whose Profile Describes Real Traffic A profile is a property of the run as much as of the program; input distribution, cache state, concurrency, and clock behaviour all decide whether the result transfers. advanced · Nov 6, 2025
  9. 09 Profiling JIT Code and Runtimes That Manage Their Own Memory Generated code has no ELF symbol table and moved objects confuse address attribution; profiling a managed runtime requires per-method code maps and object-aware heap analysis. advanced · May 29, 2025
  10. 10 Comparing Two Profiles to Find a Regression That Is Real A differential flame graph is a difference of two sample sets on a shared layout; the normalisation, the noise floor, and frame identity each decide whether a red bar means anything. advanced · Sep 15, 2026