CPU usage in Linux

To check and interpret CPU usage in Linux, we can use several commands. Here are the most common ones:
1. Using top Command
top
Press
1to see CPU usage per core.The
%Cpu(s)section shows:us(user) → CPU used by user processes.sy(system) → CPU used by kernel processes.id(idle) → CPU that is not being used.wa(wait) → CPU waiting for I/O operations.ni(nice) → CPU used by processes with nice values.hi/si(hardware/software interrupts) → CPU consumed by interrupts.st(steal) → CPU stolen by the hypervisor (in virtualized environments).
Example:
%Cpu(s): 10.0 us, 5.0 sy, 0.0 ni, 80.0 id, 5.0 wa, 0.0 hi, 0.0 si, 0.0 st
If
us + syis high, it indicates heavy CPU usage.If
wais high, it suggests disk I/O bottleneck.
2. Using htop (Better Visualization)
htop
Displays real-time CPU usage per core.
Shows a graphical representation of CPU load.
Allows sorting processes by CPU usage.
3. Using mpstat (Part of sysstat package)
mpstat -P ALL 1
Shows CPU usage for all cores (
-P ALL).Updates every 1 second.
Example Output:
CPU %usr %nice %sys %iowait %irq %soft %steal %idle
all 15.0 0.0 5.0 1.0 0.0 0.0 0.0 79.0
0 10.0 0.0 5.0 1.0 0.0 0.0 0.0 84.0
1 20.0 0.0 5.0 1.0 0.0 0.0 0.0 74.0
The "all" row aggregates all CPU cores.
A high %iowait suggests an I/O bottleneck.
4. Using sar (Historical CPU Usage)
sar -u 5 10
Collects CPU usage every 5 seconds, 10 times.
Useful for analyzing past CPU usage trends.
5. Checking Load Average (uptime or w)
uptime
or
w
Example output:
10:30:15 up 5 days, 3:45, 2 users, load average: 2.50, 1.90, 1.80
The load average values (2.50, 1.90, 1.80) correspond to:
1-minute average (2.50)
5-minute average (1.90)
15-minute average (1.80)
If the load average exceeds the number of CPU cores, the system is overloaded.
Conclusion
Use
toporhtopfor real-time monitoring.Use
mpstatto check CPU usage per core.Use
sarfor historical analysis.Use
uptimeorwto check load average.
