What is Load Average ?
The load average in Linux and Unix-like operating systems represents the average system load over a period of time. It is a measure of the demand on the system’s resources. The load average is displayed as three numbers which represent the average load on the system over the last 1, 5, and 15 minutes, respectively.
Here’s a breakdown of what each part means:
First Number (1-minute average): This shows the average system load over the last minute. It provides an immediate sense of how busy the system is right now. A high number indicates a lot of processes are currently demanding CPU time.
Second Number (5-minute average): This reflects the average load over the last 5 minutes. It smooths out short-term fluctuations and gives a slightly longer perspective on the system’s load.
Third Number (15-minute average): This shows the average load over the last 15 minutes. It provides a broader view of the system’s load trend, smoothing out more of the minute-to-minute fluctuations.
Understanding Load Average Values:
- Value of 0: Indicates that the system is idle, with no processes waiting for CPU time.
- Value equal to the number of CPU cores: Indicates a fully utilized system but without any processes waiting. For a system with 4 CPU cores, a load average of 4.00 means the system is fully utilized.
- Value greater than the number of CPU cores: Indicates that the system is overloaded, with processes waiting for CPU time. For example, on a 4-core system, a load average above 4.00 suggests that some processes are having to wait.
It’s important to consider the context when interpreting load averages. A “high” load average on a system with many CPU cores might not be as concerning as the same load on a system with fewer cores. Additionally, load averages consider all processes waiting for CPU as well as I/O (disk, network), so high I/O wait can also contribute to higher load averages.
What is o/p of TOP command?
The top command provides a dynamic, real-time view of system processes and resource usage. Here's a breakdown of what you'll see:
Header Section (System Summary)
Line 1 — System Information
top — 14:30:15 up 5 days, 12:34, 3 users, load average: 0.15, 0.10, 0.05
- 14:30:15: Current time
- up 5 days, 12:34: System uptime (5 days, 12 hours, 34 minutes)
- 3 users: Number of logged-in users
- load average: 1-minute, 5-minute, and 15-minute load averages
- Values represent average system load
- 1.0 = 100% CPU utilization on single-core system
- Values > 1.0 indicate system overload
Line 2 — Task Summary
Tasks: 125 total, 2 running, 123 sleeping, 0 stopped, 0 zombie
- total: Total number of processes
- running: Currently executing processes
- sleeping: Idle processes waiting for events
- stopped: Processes stopped by signals
- zombie: Terminated processes waiting for parent cleanup
Line 3 — CPU Usage
%Cpu(s): 12.5 us, 3.2 sy, 0.0 ni, 84.1 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
- us (user): Time spent in user mode
- sy (system): Time spent in kernel mode
- ni (nice): Time spent on low-priority processes
- id (idle): Idle time
- wa (iowait): Time waiting for I/O operations
- hi (hardware interrupts): Time handling hardware interrupts
- si (software interrupts): Time handling software interrupts
- st (steal): Time stolen by hypervisor (virtualized environments)
Line 4 — Memory Usage
MiB Mem : 8192.0 total, 2048.5 free, 4096.2 used, 2047.3 buff/cache
- total: Total physical memory
- free: Available memory
- used: Memory in use
- buff/cache: Memory used for buffers and cache
Line 5 — Swap Usage
MiB Swap: 2048.0 total, 1024.0 free, 1024.0 used, 3072.1 avail Mem
- total: Total swap space
- free: Available swap space
- used: Swap space in use
- avail Mem: Estimation of available memory for new applications
Process List (Main Table)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
Get Garima Gupta’s stories in your inbox
Join Medium for free to get updates from this writer.
1234 root 20 0 123456 4567 2345 S 5.2 2.1 0:12.34 systemd
5678 user 20 0 98765 3210 1098 R 15.8 1.5 1:23.45 firefox
Column Explanations:
- PID: Process ID (unique identifier)
- USER: Username running the process
- PR: Priority (lower = higher priority)
- NI: Nice value (-20 to 19, affects priority)
- VIRT: Virtual memory size (KB)
- RES: Resident memory size (physical RAM used, KB)
- SHR: Shared memory size (KB)
- S: Process state
- R: Running
- S: Sleeping
- D: Uninterruptible sleep (I/O)
- T: Stopped
- Z: Zombie
- %CPU: CPU usage percentage
- %MEM: Memory usage percentage
- TIME+: Total CPU time used
- COMMAND: Command name or command line
Interactive Commands
While top is running, you can use these keys:
- q: Quit
- k: Kill a process (enter PID)
- r: Renice (change priority)
- P: Sort by CPU usage (default)
- M: Sort by memory usage
- T: Sort by running time
- u: Show processes for specific user
- 1: Toggle between single/multiple CPU core display
- h: Help
- Space: Refresh display immediately
Important Metrics to Watch
1. Load Average
- < 1.0: System running smoothly
- 1.0–2.0: System busy but acceptable
- > 2.0: System overloaded
2. CPU Usage
- High %CPU processes consuming resources
- High wa (iowait) indicates I/O bottlenecks
3. Memory Usage
- RES column shows actual RAM usage
- High memory usage may lead to swapping
- avail Mem shows memory available for new processes
4. Process States
- Many D state processes indicate I/O issues
- Z (zombie) processes should be minimal
Example Interpretation
If you see:
- Load average: 2.5, 2.3, 2.1 (high load)
- %CPU: 5% idle (95% busy)
- High iowait (wa): I/O bottleneck
- Low available memory: Memory pressure
This indicates a heavily loaded system with potential I/O and memory constraints.





