- 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 👇
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:
🧩 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.
✅ 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.
1️⃣ iotop - Real-Time Disk I/O Monitoring
🧩 Command:
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:
--onlyor-o: Show only processes doing actual I/O.
💡 Use it when you need to pinpoint which app is hitting your disk the hardest.
2️⃣ iostat - Input/Output Statistics
🧩 Command:
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.
3️⃣ vmstat - Virtual Memory & Disk Stats
🧩 Command:
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.
🧠 Use it to see how memory and I/O interact during high load.
4️⃣ atop - Advanced Performance Monitor
🧩 Command:
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.
🔥 Great for long-term performance tracking and process-level analysis.
5️⃣ dstat - Comprehensive System Monitor
🧩 Command:
Code:
dstat --disk --io For a specific disk:
Code:
dstat --disk --io -D sda 6️⃣ ioping - Disk Latency Test
🧩 Command:
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.⚙️ Use it to compare SSD vs HDD speed or detect latency spikes.
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.✅ Keep your system fast, stable, and efficient.
✅ Check the man pages (
man iotop, etc.) to explore advanced options.💬 Have questions or your favorite I/O monitoring trick? Drop it in the comments - let’s keep Linux running at full speed! ⚡🐧
Last edited: