Learning series · 6 episodes · Staff / Senior / Principal
The Machine Had More Resources. Why Was It Slower?
Six investigations into CPU quotas, JVM pauses, lock contention, NUMA, memory pressure and zero-copy I/O.
Start series →Follow the decisions in order
- Part 1 of 6
Staff
CPU is at 40%. Why is the pod being throttled?Explain bursty cgroup CPU quota enforcement and validate scheduling-related tail latency.
- Part 2 of 6
Senior
Every few minutes, p99 jumps by 300 ms. Is it garbage collection?Diagnose Java GC-related tail latency using JFR events, allocation rate and live data size.
- Part 3 of 6
Staff
We upgraded from 16 cores to 64. Why did throughput fall?Measure serialization caused by global locks and redesign for per-key independent ownership.
- Part 4 of 6
Principal
The database moved to a bigger server. Why did memory get slower?Measure remote memory access and decide CPU/memory placement for database working sets.
- Part 5 of 6
Staff
The database never crashed. Why did swapping make every query slow?Distinguish swap occupancy, active memory faults and reclaim stalls while designing memory budgets.
- Part 6 of 6
Senior
The disk is fast and the network is fast. Why does copying data use all the CPU?Explain why kernel-assisted file-to-socket transfer removes redundant user-space copies and its limits.