Skip to content

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.