Knowledge Guide
HomeSystem DesignMental Models & Systems Thinking

Performance Engineering — The USE Method & Flame Graphs

Find the bottleneck before you touch a line

The Make-it-Fast lesson says "measure first." This is the how — the systematic toolkit performance engineers (Brendan Gregg's methodology) use so they fix the real hotspot, not a guess. Two tools do most of the work: the USE method to find the bottlenecked resource, and the flame graph to find the hotspot code.

USE: which resource is the problem?

For every resource (CPU, memory, disk, network, and per-device), check three things:

MeansRed flag
Utilization% busy timenear 100% → a bottleneck
Saturationqueued/waiting worka run-queue or I/O queue building → demand > capacity
Errorsfailuresretransmits, drops, ECC errors

A resource that's saturated (queueing) is your bottleneck — that tells you where to profile before you dive into code.

A flame graph where the dbQuery/seqScan box is the widest plateau at the bottom of handleRequest, marking it as the hotspot to fix
A flame graph where the dbQuery/seqScan box is the widest plateau at the bottom of handleRequest, marking it as the hotspot to fix

Reading a flame graph

Each box is a function; width = share of CPU time (samples), and boxes stack by call depth (a caller sits below its callees... or above, depending on orientation). You don't read it top-to-bottom — you scan for the widest box. That plateau is where the time goes. In the diagram, dbQueryseqScan is 58% of the time: add an index and over half the latency disappears. Micro-optimizing the narrow json box would be wasted (Amdahl).

On-CPU vs off-CPU: a CPU flame graph shows time computing; if your service is slow but CPU is idle, you need an off-CPU profile — the time is spent blocked (waiting on I/O, locks, the network). Knowing which to capture is half the skill.

Takeaways


Re-authored for this guide; flame-graph diagram hand-authored as SVG. Follows Brendan Gregg's Systems Performance (USE method, flame graphs). See also: Make It Work→Right→Fast, Tail Latency, How a Query Executes.

🤖 Don't fully get this? Learn it with Claude

Stuck on Performance Engineering — The USE Method & Flame Graphs? Open Claude, copy a block below, and it'll teach you this exact concept — visually and interactively.

🎨 Explain it visually

Build the mental picture, not memorization.

I just read a lesson on **Performance Engineering — The USE Method & Flame Graphs** (System Design) and want to truly understand it. Explain Performance Engineering — The USE Method & Flame Graphs from first principles using ONE vivid real-world analogy and a visual mental model — draw it as ASCII art or a clear step-by-step diagram — with a concrete example using real numbers. Then ask me one question to check I got the mental picture, and wait for my reply. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🤔 Walk me through it (interactive)

Socratic — adapts to where you're stuck.

Teach me **Performance Engineering — The USE Method & Flame Graphs** interactively. Ask me ONE guiding question at a time, wait for my answer, and adapt to my confusion — build the idea with me step by step instead of explaining it all at once. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧪 Quiz me & fix my gaps

Active recall exposes what you missed.

Quiz me on **Performance Engineering — The USE Method & Flame Graphs** with 5 questions, easy to tricky, ONE at a time. Tell me if each answer is right; at the end, explain clearly what I got wrong and why. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧠 Make it stick

Intuition + hook + flashcards for long-term memory.

Help me remember **Performance Engineering — The USE Method & Flame Graphs** for the long term: give the one-sentence intuition, a memorable hook/mnemonic, a tiny worked example, and 3 active-recall flashcards (Q -> A). If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.

📝 My notes