Operations 9 min read

How to Measure and Interpret Linux Disk I/O Performance Metrics

This article explains the Linux storage I/O stack, defines the five key disk performance metrics, and shows how to monitor both disk and process I/O using iostat, pidstat, and iotop, with practical command examples and interpretation tips.

Liangxu Linux
Liangxu Linux
Liangxu Linux
How to Measure and Interpret Linux Disk I/O Performance Metrics

Linux Storage I/O Stack

The Linux storage I/O stack consists of three layers: the file system layer, the generic block layer, and the device layer. The generic block layer is the core of Linux disk I/O, providing a standard interface upward to file systems and applications and abstracting heterogeneous disks downward as a unified block device.

Key Disk Performance Metrics

Utilization : Percentage of time the disk spends processing I/O. Values above 80% often indicate a performance bottleneck.

Saturation : Measure of how busy the disk is; 100% saturation means the disk cannot accept new I/O requests.

IOPS : Number of I/O operations per second.

Throughput : Amount of data transferred per second.

Response time : Time interval between issuing an I/O request and receiving its response.

Note: Utilization counts only whether I/O is occurring, not the size of the I/O; a disk at 100% utilization may still accept additional requests.

Observing Disk I/O with iostat

The iostat tool is the most common way to observe disk I/O performance. It reports metrics derived from /proc/diskstats.

# -d -x means display all disk I/O performance
$ iostat -d -x 1
Device    r/s w/s rkB/s wkB/s %rrqm %wrqm r_await w_await aqu-sz ... %util
loop0     0.00 0.00 0.00 0.00 0.00 0.00 0.00   0.00   0.00   ... 0.00
loop1     0.00 0.00 0.00 0.00 0.00 0.00 0.00   0.00   0.00   ... 0.00
sda       0.00 0.00 0.00 0.00 0.00 0.00 0.00   0.00   0.00   ... 0.00
sdb       0.00 0.00 0.00 0.00 0.00 0.00 0.00   0.00   0.00   ... 0.00

Important columns to watch: %util – disk I/O utilization. r/s and w/s – IOPS for reads and writes. rkB/s and wkB/s – throughput for reads and writes. r_await and w_await – average response time for reads and writes.

Saturation is not directly reported by iostat. Typically you compare the observed average request queue length or wait time with benchmark results (e.g., from fio) to assess saturation.

Observing Process I/O

To see per‑process I/O activity, use pidstat or iotop because iostat only provides aggregate disk statistics.

$ pidstat -d 1
13:39:51 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
13:39:52 102 916 0.00 4.00 0.00 0 rsyslogd

The output includes UID, PID, read/write rates (KB/s), cancelled write size, and I/O delay measured in clock cycles.

$ iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 7.85 K/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
 TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
15055 be/3 root 0.00 B/s 7.85 K/s 0.00 % 0.00 % systemd-journald

The first two lines show total and actual disk read/write amounts; subsequent columns display per‑process details such as thread ID, priority, user, read/write rates, swap‑in percentage, and I/O wait percentage.

Conclusion

The article introduces the essential Linux disk I/O metrics—IOPS, throughput, utilization, saturation, and response time—and demonstrates how to collect them with iostat, pidstat, and iotop. When analyzing the data, consider read/write ratios, I/O types, and request sizes for a comprehensive performance assessment.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

performanceDisk I/Oiotopiostatpidstat
Liangxu Linux
Written by

Liangxu Linux

Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.