Plainnotes

Reading await and util in iostat

2025-09-24 · 2 min readSystems

Two columns in iostat -x 1 get misread.

%util is the fraction of time the device had requests in flight. On a single-queue spinning disk that is close to saturation; on NVMe with many queues it sits near 100% under no pressure at all.

await is the average time per request in milliseconds, including queueing and service. That is the latency users experience.

To judge saturation, watch aqu-sz and whether await grows linearly with load. await going from 2 ms to 50 ms while %util is only 60% means requests are queueing before the device is saturated.

Look at r_await and w_await separately — slow reads and slow writes have different causes.