
- by x32x01 ||
Disk I/O (Input/Output) problems are among the most common causes of slow performance on Linux systems. When applications try to read or write too much data to storage devices - like HDDs, SSDs, SAN, or NAS - the system can quickly become sluggish
.
Fortunately, Linux provides several powerful command-line tools that help you identify, monitor, and fix disk performance bottlenecks.
Let’s dive into the most effective commands for analyzing disk I/O performance
Check CPU I/O Wait Using the top Command
Run the top command to see if your CPU is waiting for disk operations to complete. Look for the wa (I/O wait) value - this shows how much time the CPU spends waiting for I/O requests to finish.
A high wa percentage often means your disk is too slow or overloaded.
Command:
Options:
Use it when you need to pinpoint which app is hitting your disk the hardest.
Command:
The
Options:
Perfect for getting an overview of disk throughput and latency.
Command:
Options:
Use it to see how memory and I/O interact during high load.
Command:
It provides detailed disk, memory, and CPU usage every 10 seconds.
Great for long-term performance tracking and process-level analysis.
Command:
Want a more flexible tool? dstat replaces tools like vmstat, iostat, and ifstat by combining their best features.
For a specific disk:
It’s especially useful for benchmarking and testing under different workloads.
Command:
Just like
Use it to compare SSD vs HDD speed or detect latency spikes.
Final Thoughts
By mastering these Linux commands -
Keep your system fast, stable, and efficient.
Check the man pages (
Have questions or your favorite I/O monitoring trick? Drop it in the comments - let’s keep Linux running at full speed! 


Fortunately, Linux provides several powerful command-line tools that help you identify, monitor, and fix disk performance bottlenecks.
Let’s dive into the most effective commands for analyzing disk I/O performance

Check CPU I/O Wait Using the top Command
Run the top command to see if your CPU is waiting for disk operations to complete. Look for the wa (I/O wait) value - this shows how much time the CPU spends waiting for I/O requests to finish.A high wa percentage often means your disk is too slow or overloaded.
iotop - Real-Time Disk I/O Monitoring

Code:
sudo iotop --only
iotop
is like top
, but for disk I/O. It displays which processes are currently performing read/write operations in real-time.Options:
--only
or-o
: Show only processes doing actual I/O.

iostat - Input/Output Statistics

Code:
iostat -dxm
iostat
command reports input/output statistics for your devices and partitions. It helps identify disks with high utilization or poor performance.Options:
-x
: Show detailed extended stats.-d
: Display device report only.-m
: Show results in MB.

vmstat - Virtual Memory & Disk Stats

Code:
vmstat -d 1 5
vmstat
stands for virtual memory statistics, but it also provides block I/O and CPU activity details.Options:
-d
: Show disk stats only.1
: Update interval in seconds.5
: Number of updates before exit.

atop - Advanced Performance Monitor

Code:
atop | grep DSK
atop
is a full-system performance monitor that shows process activity - even for processes that have already finished during the interval.It provides detailed disk, memory, and CPU usage every 10 seconds.

dstat - Comprehensive System Monitor

Code:
dstat --disk --io
For a specific disk:
Code:
dstat --disk --io -D sda

ioping - Disk Latency Test

Code:
ioping /dev/nvme0n1 -c4
ping
measures network latency, ioping
measures disk response time. It shows how fast your disk can respond to requests - a quick and effective way to test storage performance.
Final Thoughts
By mastering these Linux commands - iotop
, iostat
, vmstat
, atop
, dstat
, and ioping
- you can quickly identify and fix Disk I/O performance bottlenecks.

man iotop
, etc.) to explore advanced options.


Last edited: