← Interview Prep

Performance Triage — USE Method & the 60-Second Checklist

A repeatable method for "the box is slow": Brendan Gregg's 60-second checklist (vmstat/mpstat/pidstat/iostat/sar), the USE method per resource, and the deeper tools (perf, strace, eBPF).

"A box is slow / an alert fired — walk me through it." The answer interviewers want is a method, not a random pile of commands. Two frameworks cover almost every performance question: Brendan Gregg's 60-second checklist to triage fast, and the USE method to be systematic about resources.

The 60-second checklist

Ten commands, in order, to form a first hypothesis on an unfamiliar Linux host:

#CommandWhat you learn
1uptimeLoad average trend (1/5/15 min). Rising = getting worse. Compare to core count.
2dmesg | tailKernel errors: OOM kills, TCP drops, disk/hardware resets.
3vmstat 1r (run queue) vs cores, si/so (swapping!), us/sy/id/wa CPU split.
4mpstat -P ALL 1Per-CPU balance — one core pegged at 100% (single-threaded bottleneck) vs evenly loaded.
5pidstat 1Per-process CPU over time — which process, without top's refresh churn.
6iostat -xz 1Per-disk: %util (saturation), await (latency), r/s w/s (IOPS).
7free -mReal headroom via available; is memory going to cache or swap?
8sar -n DEV 1Per-NIC throughput — near line rate? packet rate for small-packet loads?
9sar -n TCP,ETCP 1New connections/s, retransmits (retrans/s = loss), resets.
10top / htopSanity-check the leaders against everything above.
The tell-tales: wa high → disk-bound; si/so non-zero → memory pressure/swap; one hot CPU in mpstat → single-threaded; retrans/s up → network loss. Each points you at the next, deeper tool.

The USE method

For every resource, check three things — Utilization, Saturation, Errors:

ResourceUtilizationSaturationErrors
CPUmpstat, top (%busy)run queue: vmstat r, load avgdmesg (MCE/throttling)
Memoryfree (used vs available)swap si/so, major faults, OOMdmesg OOM/ECC (EDAC)
Diskiostat -xz %utilawait, queue depth (aqu-sz)smartctl, dmesg I/O errors
Networksar -n DEV vs link speeddrops/backlog: ss, netstat -s, qdiscethtool -S, ip -s link, retransmits

Errors first, then utilization, then saturation — and remember saturation is what users feel as latency even when utilization looks "only" 80%.

Going deeper

SymptomNext tool
Which syscalls / why a process is stuck in Dstrace -p, /proc/<pid>/stack, /proc/<pid>/wchan
Where CPU time really goesperf top, perf record → flame graph
Packet-level network truthtcpdump, then Wireshark
Historical (what happened at 03:00?)sar archives, atop -r (records per-process history)
Kernel-level tracingbpftrace / bcc (eBPF): biolatency, execsnoop, tcpretrans

How to narrate it in the interview

  1. Restate the symptom and its blast radius (one host? one service? region?).
  2. Run the 60-second checklist → form a hypothesis (CPU / memory / disk / network).
  3. Apply USE to that resource to confirm utilization vs saturation vs errors.
  4. Drill with the deep tool, correlate with a recent change/deploy, then propose a fix and a guardrail (alert/dashboard) so it's caught earlier next time.
Related: Linux Fundamentals Q&A · Troubleshooting Scenarios.