I am stuck on an IOwait related problem, the server I am monitoring shows a very high value for IOwait during my load run time (50%-70%). I generated this data using the SAR report command. The ideal value should be below 8%-9% as the server has 12 cores(1/12 ~ 0.08). I read this somewhere and took the assumption accordingly.

What can be done to rectify this high IOwait problem, how is it related to other factors in the server which can be checked for to improve the performance.

  • 1
    Could you please provide physical disk model? ls /dev/disk/by-id/ or something. Honestly, I haven't heard of a disk with cores and I am very curious. – mikst Aug 21 '18 at 9:36
  • Sorry, I rectified the mistake, the server has 12 cores. – M. Rafi Aug 21 '18 at 9:48

Allow me to reveal the small Linux secret: there is no reliable iowait statistics in Linux. This is only truth. From PROC(5) we read:

iowait (since Linux 2.5.41)

(5) Time waiting for I/O to complete. This value is not reliable, for the following reasons:

  1. The CPU will not wait for I/O to complete; iowait is the time that a task is waiting for I/O to complete. When a CPU goes into idle state for outstanding task I/O, another task will be scheduled on this CPU.

  2. On a multi-core CPU, the task waiting for I/O to complete is not running on any CPU, so the iowait of each CPU is difficult to calculate.

  3. The value in this field may decrease in certain conditions.

So, my suggestion for is to forget about iowait measurements in Linux.


The more powerful is CPU the greater iowait, not the other way around.

In general in order to reduce iowait this can help:

  1. Optimising application code if possible/applicable, for example suboptimal database query can force DBMS execute inefficient plan and cause excessive disk load.

  2. Getting more RAM if your load is heavy on reads.

  3. Making storage subsystem faster. Faster disks, faster RAID, faster storage controller, write-back caching. That's a science on it's own.

Sorry, with generic question like that, there is only a generic answer.

  • Thank you @mikst, I'll dig deep into the inputs you have given and ask for more specific inputs. – M. Rafi Aug 21 '18 at 10:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.