Iostat – How does %util affect %idle and %iowait

iostat

Looking at iostat, if the system needs to issue a request for io, but has not yet been able to do so due to %util being pegged, would that wait be counted as %idle or %iowait?

Best Answer

The meaning of three concepts:

%util:The previous answer has clearly described the meaning of idle.

%idle:The system is idle, that is, there is no running process.

%iowait: For a given CPU, the I/O wait time is the time during which that CPU was idle (i.e. didn’t execute any tasks) and there was at least one outstanding disk I/O operation requested by a task scheduled on that CPU (at the time it generated that I/O request).

High %util means that IO is busy, and the rate of the IO system is much lower than the processing rate of the CPU, so:

1) If the system has some CPU-intensive tasks running, the CPU will run other tasks while the IO is waiting, the CPU usage is high, and the %idle is low. At the same time %iowait is low (iowait indicates the proportion of IO transmission when IDLE)

2) If the system has no tasks to run, the CPU is idle when IO waits, this time the CPU usage is low, %idle is high, %iowait is high.