Load Average
Load average is a quick measure of how busy a Linux machine is. It shows three numbers: the average over the last minute, five minutes, and fifteen minutes. Roughly, it counts how many tasks were running or waiting their turn. Compare it to the number of processor cores: if the load stays above that number, work is piling up.
Load average is an exponentially damped moving average of the number of tasks in the runnable state (running or waiting for a CPU) plus tasks in uninterruptible sleep (state D, usually waiting on disk or NFS I/O).
Reading it:
- Compare against the number of logical CPUs (
nproc). On 8 CPUs, a load of 8 means full; 16 means a queue as long as the work being done. - 1-minute vs 15-minute shows direction:
4.10, 2.05, 0.80is rising;0.80, 2.05, 4.10is recovering.
Linux-specific gotcha: because D-state tasks count, high load can mean the system is waiting on storage or network filesystems, not short on CPU. Check %wa (iowait) in top and the b column in vmstat.
Where it comes from: /proc/loadavg, also shown by uptime, top, htop, and w.
Better per-resource signals: PSI (pressure stall information) in /proc/pressure/{cpu,memory,io} reports the share of time tasks stalled on each resource.
Reading load and finding the cause
$ uptime
14:02:11 up 6 days, 2 users, load average: 7.82, 6.40, 3.15
$ nproc
4
# CPU-bound or I/O-bound? Look at us/sy vs wa
$ top -bn1 | head -5
%Cpu(s): 12.0 us, 3.1 sy, 0.0 ni, 10.2 id, 74.5 wa
# Tasks stuck waiting on I/O (state D)
$ ps -eo state,pid,cmd | grep "^D"
# Pressure stall info
$ cat /proc/pressure/io
some avg10=62.13 avg60=48.90 avg300=20.11 total=... Load average is the first number to check when a server feels slow, and the second step is always “load from what?” High load with high CPU usage means add cores or find the hungry process. High load with high iowait means a slow or failing disk, a saturated NFS share, or heavy swapping. Monitoring tools alert on load divided by core count, not on the raw number.