I happen to run gtk-gnutella on a system with slow disk.
The system load frequently reaches 10 on that box, but
all of these processes are in D state.
gnutella still thinks there's overload and throttles
its UI updates. That's nonsense, there's no CPU
shortage on the system.
The right thing to do, at least on Linux systems, would
be to check /proc/stat for free idle time. Mine says,
among other interesting lines:
cpu 6195644 181441 470620 37216047 2006403 27167 87753 0
The fourth number is the (cumulative) idle time in the
system. If it increases by more than 10 per second or
so, then the system is not busy.
You can also check /proc/self/status. The SleepAVG
parameter says how often a process released its
scheduled time voluntarily (by waiting). If that's near
zero, you may throttle yourself, otherwise there's no