Fundamentals 12 min read

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.

Liangxu Linux
Liangxu Linux
Liangxu Linux
Understanding Linux Load Average: Meaning, CPU Usage, and Real‑World Examples

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 600

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

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

performanceLinuxsystem-monitoringstress testLoad AverageCPU usage
Liangxu Linux
Written by

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

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.