High Load Average but Low CPU Usage — Where's the Bottleneck?

The error: uptime or top shows a high load average, but the CPU usage percentage itself looks perfectly normal or even low — which seems contradictory.

Environment: Any Linux system.

Why this happens: Load average on Linux counts processes waiting for a resource, not just CPU — that includes processes blocked waiting on disk I/O. A high load average with low CPU usage almost always means processes are stuck waiting on storage, not on the processor, which is why watching CPU percentage alone tells an incomplete story.

The fix:

  1. Check I/O wait specifically: iostat -x 2, watching the %iowait column.
  2. Identify which process is actually generating the I/O: iotop (if installed) shows per-process disk activity directly.
  3. Check for a failing or degraded disk — a drive that's still technically working but responding slowly can generate exactly this symptom: smartctl -a /dev/sdX.
  4. Check for swap thrashing as a related cause: vmstat 2, watching the si/so columns — heavy swapping produces the same “waiting, not computing” pattern.

One thing worth knowing: people default to assuming a high load average means “the CPU is overloaded, add more cores” — when the actual fix, most of the time this specific symptom shows up, is storage-related: a slow disk, a failing drive, or insufficient RAM causing swap activity.