Understanding Linux CPU Load Average and Utilization: A Practical Guide
This article explains the key CPU performance metrics on Linux—including load average, CPU usage percentages, and process states—showing how to interpret top, ps, uptime, and mpstat outputs and how to differentiate between load and utilization in various workload scenarios.
1. Common CPU Metrics
The top command provides a snapshot of CPU activity. A typical output includes load averages, task counts, and per‑CPU usage percentages.
top - 20:12:00 up 70 days, 3:49, 1 user,
load average: 0.10, 0.18, 0.14
Tasks: 2229 total, 1 running, 332 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 52468537 total, 47777491 free, 36061900 used, 10848532 buff/cache
KiB Swap: 31250428 total, 31250428 free, 0 used. 48045312+ avail MemFirst line (load average) : three numbers represent the 1‑minute, 5‑minute, and 15‑minute average load. Second line (tasks) : total processes, how many are running, sleeping, stopped, or zombie. Third line (%Cpu(s)) : us – user‑space CPU usage, sy – kernel‑space usage, ni – nice time, id – idle, wa – I/O wait, hi – hardware interrupts, si – software interrupts, st – stolen time. Bottom line (process list) : PID, user, priority, nice, virtual and resident memory, state, CPU and memory percentages, runtime, and command.
The ps aux command can show detailed per‑process information such as PID, CPU% and MEM%.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 38604 6648 ? Ss Sep17 5:05 /sbin/init nopti
root 2 0.0 0.0 0 0 ? S Sep17 0:09 [kthreadd]
root 7 0.0 0.0 0 0 ? I< Sep17 0:00 [mm_percpu_wq]
...Common process states: R – running or ready (using or waiting for CPU) S – interruptible sleep D – uninterruptible sleep (usually I/O) T – stopped Z – zombie I – multi‑threaded < – high‑priority (can combine, e.g., S<) + – foreground process group (e.g., R+)
2. CPU Load Average
The uptime command quickly displays the system load.
# uptime
21:58:50 up 321 days, 12:10, 1 user, load average: 4.25, 4.98, 4.73Fields meaning: Current time System uptime Number of logged‑in users Load average for the last 1, 5, and 15 minutes Load average is the average number of processes in runnable or uninterruptible states per unit time. Runnable processes correspond to the R state shown by ps ; uninterruptible processes are typically waiting on I/O. When the average number of runnable processes exceeds the number of CPU cores, contention occurs and the load rises sharply. Monitoring the three intervals helps spot trends: a high 1‑minute value with lower 5‑ and 15‑minute values indicates a sudden spike, while a low 1‑minute value followed by higher 5‑ and 15‑minute values suggests a gradual increase.
3. CPU Utilization
CPU utilization measures the percentage of CPU time spent doing work, independent of load average.
Key percentages from top or mpstat:
%usr – time spent in user space (applications)
%sys – time spent in kernel space (system calls)
%iowait – time the CPU waits for I/O operations
%idle – idle time
Example using mpstat to monitor each CPU every 5 seconds:
# mpstat -P ALL 5
Linux 4.15.0-58-generic (cs1ahyper01n07) 12/04/2025 _x86_64_ (64 CPU)
10:41:46 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:41:51 PM all 1.10 0.00 1.82 0.01 0.00 0.00 0.00 0.00 0.00 95.74
...Important metrics to watch: CPU – identifier (all for aggregate, or individual core numbers) %usr – user‑space workload %sys – kernel‑space workload %iowait – I/O‑bound wait time, closely related to uninterruptible processes %idle – remaining idle capacity
When comparing load average and CPU utilization, consider:
CPU‑intensive applications increase both load and utilization.
I/O‑heavy workloads raise load (through %iowait) while overall CPU utilization may stay low; in such cases, focus on the %iowait metric.
Tech Stroll Journey
The philosophy behind "Stroll": continuous learning, curiosity‑driven, and practice‑focused.
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.
