Howto check for slow io-operations

From: Andreas Koehler (Andreas.Koehler@sysde.eads.net)
Date: Wed Jul 16 2003 - 06:43:18 EST


Hello,

sorry, if this is a little bit off-topic but I don't known where else to
ask for!

The following situation is given:
An executable uses a small :-) number of (POSIX-)threads. One of them is
the "input-thread" that blocks on select and delivers incoming data to a
reentrant queue. I need this thread to avoid a too high dropping rate for
udp data! A "processing-thread" reads the items from the queue and does
the "real" processing. I detected that the "input-thread" seems to be
potentially much faster than the "processing-thread" but under normal
load, I thought, this effect is regulated by the scheduler since busy
processes with SCHED_OTHER should have a higher priority than the
idle-process :-).
Unfortunately even under such conditions the number of items in the
internal queue between the "input-thread" and the "processing-thread"
increases continuously. Strange is, that the evaluation of /proc/stat and
/proc/loadavg showed idle schedules between 70 and 90 percent.

How is this possible?

The only thing I could imagine is that the "processing-thread" is not
really busy but waits for the completion of some slow input/output
operations. Anyway - in this case it would be important to me to identify
this slow input/output operations.

Does the kernel provide any logging facilities related to this
identification?

Or does anbody know a solution for the original problem?

I use the following environment:
Red Hat Linux 8.0 3.2-7 with Linux version 2.4.18-14

Much thanks
Andreas

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jul 23 2003 - 22:00:24 EST