Assuming that I have a dedicated server on which I am running multiple instances of mysql and postresql servers. How without iotop determine which instance in particular time (proc/pid/io shows data collected in some peroid of time) makes the biggest IO (so it increases IOWAIT)?

When lots of ppl do something on DB then I clearly see which instance is making the load because of high cpu usage, but I had a situation when the cpu usage was just normal, but very high iowait made a huge load on server and i had problem finding process that was making some outstanding IO

  • I am not sure it will help you but in my case when my system is doing lot of I/O or waiting for I/O, process goes to D state which I can find out either top command or using ps auwx | awk '$8 ~ "D"'.Also as you dont want to use iotop not sure you want to use another tool,I am using blktrace to find it out as it give lot of information on per I/O basis.I love this tool so much that I create video related to that youtube.com/watch?v=s0XSWbIF84I
    – Prashant Lakhera
    Commented Aug 22, 2014 at 16:07
  • Does each PostgreSQL instance run under a separate user ID? Or are they all running as the same unix user (say postgres)? Personally I'd be using perf tracepoints for fsync and block I/O; I wrote a bit on this a while ago: blog.2ndquadrant.com/tracing-postgresql-perf Commented Aug 22, 2014 at 16:36

1 Answer 1


I would suggest you to take a look at atop. When you run it interactively you can select 'i' then press 1 , after that you can select 'd'.

Atop will colour the resources thrashed and 'd' will show only processes hitting disks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.