How to find per-process I/O statistics on Linux
xaprb.com
xaprb.com
This tool is packaged in every current Linux OS.
If you want to change IO priority, run ionice.
edit: What I'm trying to say, is that your statement is overly broad. Not all linux distro's have 'iotop' installed. It is not a guarantee. Particularly on specialized distros.
apt-get install iotop
or
yum install iotop
away. That took about 6 seconds on the two machines I tried it on. So even if it is not installed by default it hardly is a hindrance that it isn't.
They were introduced in 2.6.20, so the stupidly conservative distros that have been frozen for years on 2.6.18 or 2.6.19 don't get to play.
On nice distros that don't force-feed you their kernel and litter their repos with broken-out kernel modules, installing something like iotop is not necessarily just a call to the package manager.
You don't seem to understand why modules exist. It doesn't matter how many modules are available, they won't be loaded unless they're needed. Eg, for PCI hardware, unless you have hardware that modules.pcimap matches to a driver. There is no overhead from having modules available to load, just extra convenience next time you, say, add a NIC or somesuch.
Also no distro force-feeds you a kernel. You're always able to build your own in the rare event that you need to, or the more likely event that you just feel interested in doing so.
For a business, most people can understand the benefit of using the same software that a few million others do.
I know exactly why modules exist, having written my own several times. The real benefit for stuff distributed with the mainline kernel is not runtime loading (you could just build them all statically), but unloading and reloading.
> sudo apt-get install iotop
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package iotop'Linux with older kernels' would be more appropriate.
In my experience sequential IO is never the problem. Instead, it seems to me that random seeks are really the only performance problem nowadays. In the most extreme case throughput is only ~100Bits/s instead of ~100MB/s. Unfortunately random seeks are hidden behind abstraction layers and thus quite invisible to programmers (until the system freezes). Maybe we just need to wait for SSDs to become cheap.
Among other things, you can distinguish random from sequential I/O using blktrace and its accompanying set of tools by looking at the distance between subsequent I/O requests sent to the disk.