Skip to content
general hardware

Bottleneck

bottleneck performance troubleshooting capacity-planning
Plain English

A bottleneck is the slowest part of a system that holds everything else back, like the narrow neck of a bottle that limits how fast water pours. A computer with a fast processor and a slow hard drive feels slow because of the drive. Finding the bottleneck tells you exactly what to upgrade or fix, instead of guessing.

Technical Definition

A bottleneck is the resource with the highest utilization or longest wait in a workload. System throughput is bounded by it.

The four usual suspects and how to see them:

ResourceSymptomsTools
CPUHigh %us/%sy, load above core counttop, mpstat -P ALL 1
MemoryLow available, swap activity, OOM killsfree -h, vmstat 1
DiskHigh %wa, %util near 100, long awaitiostat -x 1, iotop
NetworkLink saturated, drops, retransmitsip -s link, iftop, ss -s

The USE method (Brendan Gregg): for every resource, check Utilization, Saturation (queueing), and Errors. It turns guessing into a checklist.

Bottlenecks move. Fix the disk and the CPU may become the limit. Measure again after every change.

Single-threaded limits: one core at 100 percent while others idle is a CPU bottleneck that total CPU percentage hides. htop per-core bars show it.

Mismatched hardware is the hardware-buying form: a fast GPU paired with a slow CPU, or a 10 GbE NIC in a PCIe x1 slot.

Source: Brendan Gregg: The USE Method

A quick bottleneck sweep

$ sudo apt install sysstat

# CPU per core
$ mpstat -P ALL 1 3

# Memory and swap activity (si/so)
$ vmstat 1 5

# Disk utilization and latency per device
$ iostat -x 1 3
Device   r/s   w/s  r_await w_await  %util
sda     12.0 410.0    3.10   88.40   99.6

# Network errors and drops
$ ip -s link show enp0s3
In the Wild

Every “the system is slow” ticket is really a bottleneck hunt. Run the sweep before changing anything, write down what you saw, change one thing, and measure again. In homelabs the common culprits are VMs sharing one SATA disk, too little RAM for the number of VMs, and a single slow network link between NAS and hypervisor. Upgrading anything other than the bottleneck wastes money.