iostat prints CPU utilisation and per-device I/O statistics, helpful for diagnosing whether disks are a bottleneck. It is part of the sysstat package and may need installing separately. Like vmstat, it takes an interval and a count, and the first line reports averages since boot.
iostat # single snapshot
iostat -xz 1 # extended, skip idle devices, every sec
iostat -p sda # specific device with partitions
Key columns in extended mode:
- r/s, w/s — reads and writes per second
- rMB/s, wMB/s — throughput
- r_await, w_await — read/write service time (ms)
- aqu-sz — average queue depth
- %util — percentage of time the device was busy
%util above about 80-90% consistently indicates a disk that is saturated. High await with low %util suggests high per-request latency, possibly from network storage or deep queues. Combined with vmstat's wa (iowait) column, you can confirm whether the CPU is being held back by disk.
For very granular analysis, biolatency from bcc-tools or iotop show per-process I/O activity, making it easier to identify which program is responsible for the load.
Related terms: vmstat, iotop, performance
Discussed in:
- Chapter 19: Performance and Observability — Disk I/O: iostat
Also defined in: Textbook of Linux