Understanding Linux Load Average: Meaning, CPU Usage, and Real‑World Examples
This article explains what Linux load average actually measures, distinguishes it from CPU utilization, describes runnable and uninterruptible states, and demonstrates its behavior through CPU‑intensive, I/O‑intensive, and high‑process‑count scenarios using common monitoring tools.
What Is Average Load?
Average load is the average number of processes in runnable or uninterruptible states over a period of time, not simply CPU utilization. A runnable process is actively using or waiting for the CPU (state R), while an uninterruptible process is waiting for I/O or other kernel‑level operations (state D).
In practice, the load value reflects the number of active processes; an ideal load equals the number of CPU cores. For example, a load of 2 on a 2‑CPU system means full utilization, while the same load on a 4‑CPU system indicates 50 % idle capacity.
Load Average vs. CPU Utilization
Load average includes both CPU‑bound and I/O‑bound processes, whereas CPU utilization measures only the time the CPU spends doing work. Consequently, a high load does not always mean high CPU usage:
CPU‑intensive workloads raise both load and CPU usage.
I/O‑intensive workloads raise load while CPU usage may stay low.
Many processes waiting for CPU raise both load and CPU usage.
Practical Scenarios
To observe these relationships, install sysstat, stress, and stress‑ng on a CentOS system (upgrade sysstat if needed).
Scenario 1 – CPU‑Intensive Load
Run a CPU‑bound stress test: $ stress --cpu 1 --timeout 600 In another terminal, monitor load with watch -d uptime.
Check CPU usage with mpstat -P ALL 5 20.
The load rises to about 1.6 while one CPU shows 100 % usage and negligible I/O wait, confirming that the load increase is driven by CPU consumption. Identify the offending process with pidstat -u 5 1, which reveals the stress process.
Scenario 2 – I/O‑Intensive Load
Generate I/O pressure:
# --hdd creates temporary files
# -i spawns workers that call sync()
$ stress-ng -i 4 --hdd 1 --timeout 600Watch load with watch -d uptime.
Observe CPU stats with mpstat -P ALL 5 20.
The load climbs to about 1.7 while one CPU shows a high %iowait (≈63 %), indicating that I/O wait is inflating the load. pidstat shows the stress‑ng processes as the cause.
Scenario 3 – Over‑Subscribed CPU (Many Processes)
Start eight CPU‑bound workers on a 4‑CPU machine: $ stress -c 8 --timeout 600 Check load with uptime; it reaches >4, reflecting more runnable processes than CPUs.
Inspect per‑process statistics with pidstat -u 5 1. Several stress processes show %wait values around 50 %, confirming heavy contention and CPU overload.
These examples illustrate how load average captures overall system pressure, how it differs from raw CPU utilization, and how to diagnose the underlying causes using standard Linux tools.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Liangxu Linux
Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
