How to check which process is causing IO wait

The ‘wa’ state in `top` can indicate an IO wait, but to figure out what’s causing the IO wait try this command:

# ps aux | awk '$8 ~ /D/  { print $0 }' | less

You can read more here. Thanks to bsandro on #lobsters.
According to `man top`:

The status of the task can be one of:
  D = uninterruptible sleep
  I = idle
  R = running
  S = sleeping
  T = stopped by job control signal
  t = stopped by debugger during trace
  Z = zombie