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?
From here to help understand %util:
Check the site above because there's an example or two that the following text from the same page, references.
%util: This number depicts the percentage of time that the device spent in servicing requests. %util can be calculated as (r/s + w/s) * svctim / 1000ms * 100 => 1025*0.96/1000 * 100 => 98.5% This simply means that in a 1 second interval, 1025 requests were sent to disk, each of which took 0.96ms for the disk to process resulting in 984 ms of disk utilization time in a period of 1 s (or 1000 ms). This means the disk is greater than 98% utilized
In the example the total number of reads and writes issued per second is 611 + 414 => 1025. Each request takes 0.96 ms to process. Therefore 1025 requests would take 1025 x 0.96 => 984 ms to process. So out of the 1 second that these requests were sent to the device in, 984 ms were taken to process the requests. This means the device utilization is 984/1000 * 100 => ~98.4%. As you can see in the above iostat output the %util does show ~ 98.5%
This should help provide you with a better understanding of what you're viewing so you can take appropriate action as needed.