iostat part2

@amitmund September 10, 2026

Linux iostat — Complete Output Fields & Meanings Guide

iostat generates 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 extended iostat reports.


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 nice command (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-0 for 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

0 Likes
2 Views
0 Comments

Filters

No filters available for this view.

Reset All