iostat part2
Linux iostat — Complete Output Fields & Meanings Guide
iostatgenerates reports on CPU utilization and input/output statistics for devices, partitions, and network filesystems. This guide breaks down every possible heading and column outputted by standard and extendediostatreports.
1. Header & Version Banner
When you run iostat, the output begins with a system identification banner:
Linux 6.x.x-generic (hostname) 09/10/2026 _x86_64_ (8 CPU cores)
Linux 6.x.x-generic: The running Linux kernel version.(hostname): The network hostname of the system.09/10/2026: Date when the report was generated._x86_64_: CPU architecture architecture family.(8 CPU cores): Number of logical CPU cores available on the system.
2. CPU Statistics (avg-cpu)
The first block of output provides system-wide or per-core CPU statistics.
avg-cpu: %user %nice %system %iowait %steal %idle
5.20 0.00 2.10 0.50 0.00 92.20
2.1 %user
- Meaning: Percentage of CPU utilization that occurred while executing at the user level (application code like Python, Java, databases, or web servers).
2.2 %nice
- Meaning: Percentage of CPU utilization consumed by processes that have had their priority explicitly altered with the
nicecommand (running at a lower priority to be polite to other tasks).
2.3 %system
- Meaning: Percentage of CPU utilization consumed by kernel-space operations (system calls, driver handling, network packet processing, VFS layer operations, and hardware interrupts).
2.4 %iowait
- Meaning: Percentage of time that the CPU cores were idle while there were outstanding block I/O requests waiting for storage completion. (High values suggest storage bottlenecks keeping tasks in uninterruptible sleep).
2.5 %steal
- Meaning: Percentage of time spent in involuntary wait by virtual CPUs while the hypervisor was servicing other virtual machines (crucial indicator of host-level CPU contention on VMs).
2.6 %idle
- Meaning: Percentage of time that the CPU cores were completely idle with no runnable tasks and no pending block I/O requests.
3. Standard Device Statistics (Device Section)
When you run iostat without flags, it displays the basic block device throughput metrics.
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 25.00 320.00 850.00 123456 456789
3.1 Device
- Meaning: The name of the block device as listed in
/dev/(e.g.,sda,nvme0n1,dm-0for LVM volumes).
3.2 tps (Transfers Per Second)
- Meaning: The number of I/O transfers (I/O requests) issued to the physical device per second. A single transfer can be multiple logical sectors grouped into a single I/O operation by the kernel.
3.3 kB_read/s (or rkB/s)
- Meaning: Amount of data read from the device expressed in kilobytes per second.
3.4 kB_wrtn/s (or wkB/s)
- Meaning: Amount of data written to the device expressed in kilobytes per second.
3.5 kB_read (Cumulative Reads)
- Meaning: Total number of kilobytes read from the device since system boot (or since stats were last reset).
3.6 kB_wrtn (Cumulative Writes)
- Meaning: Total number of kilobytes written to the device since system boot.
4. Extended Statistics (iostat -x)
When you append -x, iostat unlocks the deep diagnostic performance metrics essential for SREs and systems engineers.
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await await aqu-sz %util
sda 50.00 20.00 4000.0 2000.0 5.00 2.00 9.09 9.09 4.10 15.00 7.20 0.50 75.00
4.1 r/s
- Meaning: The number of read requests completed per second by the device.
4.2 w/s
- Meaning: The number of write requests completed per second by the device.
4.3 rrqm/s (Read Requests Merged Per Second)
- Meaning: The number of adjacent read requests queued by the kernel that were merged into a single physical read request before being sent to the device driver. (High merging is efficient).
4.4 wrqm/s (Write Requests Merged Per Second)
- Meaning: The number of adjacent write requests queued by the kernel that were merged into a single physical write request before submission.
4.5 %rrqm
- Meaning: Percentage of read requests merged together relative to the total number of read requests queued.
4.6 %wrqm
- Meaning: Percentage of write requests merged together relative to the total number of write requests queued.
4.7 r_await
- Meaning: The average time (in milliseconds) for read requests issued to the device to be served. This includes time spent sitting in kernel queues plus actual hardware service time.
4.8 w_await
- Meaning: The average time (in milliseconds) for write requests issued to the device to be completed.
4.9 await
- Meaning: The overall average time (in milliseconds) for all I/O requests (reads and writes combined) to complete. This is the primary latency indicator for disk bottlenecks.
4.10 aqu-sz (Average Queue Size)
- Meaning: The average queue length of the requests that were issued to the device (combining requests active in the device driver queue plus requests currently being serviced by hardware). High values indicate storage backing store exhaustion.
4.11 %util (Device Utilization)
- Meaning: Percentage of elapsed time during which I/O requests were issued to the device (bandwidth saturation indicator). Note: On high-performance parallel NVMe storage, 100% util does not automatically mean poor performance if latency (
await) remains sub-millisecond.
5. Specialized / Alternative Output Columns
Depending on flags (-m, -d, -z, etc.) or newer kernel versions, you may encounter these alternative headings:
Device rMB/s wMB/s d/s kB_dscd/s discard/s RAI-sz
5.1 rMB/s & wMB/s
- Meaning: Read and write throughput displayed explicitly in Megabytes per second (enabled via
iostat -m) rather than kilobytes.
5.2 d/s or discard/s
- Meaning: Number of discard requests (TRIM operations for SSDs) completed per second.
5.3 kB_dscd/s
- Meaning: Amount of data discarded (trimmed) in kilobytes per second.
5.4 rareq-sz (Read Request Size)
- Meaning: Average size (in kilobytes) of the read requests issued to the device.
5.5 wareq-sz (Write Request Size)
- Meaning: Average size (in kilobytes) of the write requests issued to the device.
6. Summary Cheat Sheet: The Core Diagnostic Triple
When diagnosing performance with iostat -x, always analyze these four indicators as a package rather than in isolation:
| Metric | Healthy Profile | Problematic / Bottlenecked Profile |
|---|---|---|
**r/s + w/s** |
Matches expected application profile | Sudden drop or extreme spike |
await |
Low (< 5ms for SSDs, < 20ms for HDDs) | High (> 50ms to hundreds of ms) |
aqu-sz |
Low (< 1 to 2) | High (spikes above 10 or 20) |
%util |
Variable | Sustained near 100% combined with high await |