R – Differentiating IOWAIT in Linux


I'm working on a monitoring agent that works with systems using the Linux kernel. By opening /proc/stat , you can easily tell how much time one one or all CPUs (aggregate) is burning waiting for I/O requests to complete.

I'm trying to find a way to break that number down so that I can differentiate between disk and network i/o. For instance, after converting the unit out of kernel ticks to seconds, you see that all CPU's combined have spent 1024 seconds waiting for I/O. I'd like to know how many of those were burned due to slow network connections.

I'm not sure if this is even possible, any help is appreciated 🙂 I don't see anything in /proc/net or sysfs that would help.

Best Solution

Try to look at SystemTap. It is very similar to Solaris DTrace and you can get to a different levels of detail.