Is I/O Wait a Measure of CPU Utilization or Idle Time?
Date: April 21, 2005
"I/O Wait" is a measurement of CPU idle time.
It's a common misconception that "I/O Wait" cycles are
blocked, and can not be used by other processes. This is not the case.
This is illustrated in the example from John Moore (below). The example
starts with an idle system, then adds an I/O intensive workload
(WIO = 87%). Next a CPU intensive application is added. The CPU
intensive applications uses all of the "Wait I/O" cycles (WIO=0%),
but does not change the I/O rate.
The practical implications of "Wait I/O" not being blocked include:
- Adding CPU's will not reduce Wait I/O.
- CPU statistics should be measured as
- Utilization = usr + sys
- Idle = wait + idle
- High CPU utilization can mask I/O bottlenecks
- You can mix I/O intensive with CPU intensive applications
on same server and not significantly affect performance.
I thought you might be able to use these TOPAS screen shots to further illustrate your white paper (http://www.aixtips.com/AIXtip/iowait.htm), which I have used on a surprisingly regular basis to try and explain the I/O Wait metric on an AIX box...
Here is my E20 (no laughing!) at idle...
Now I am running ndisk to produce I/O and subsequently I/O wait. The command is /ndisk -f filename -S -r50 -b 4096 -t 60
Now I add the ncpu program to stress the cpu (notice ncpu and ndisk on the process list) - command is /ncpu -c Notice how the I/O wait cycles are now being used in the "User" area
It is also important to not that running ncpu does not have much affect on the I/O rates
This is the little demo I ran for the nonbelievers. We actually ended up running these same programs on their production servers and now they all agree that I/O wait cycles are actually idle cycles that can be used if there is additional work for the processor to do.
521 South Boston Ave.
Tulsa, OK 74103