[ Followup-To set to comp.os.linux.development.apps ]
Hello,
I'm working on a Linux application that is supposed to process UDP
packets at a high rate: roughly 4 packets per ms.
Right now, the receiver busy waits on the socket to minimize the delay
between the time when the packet reaches the network card and the time
when the application gets to process the packet.
The actual processing accounts only for 1-2% of the CPU utilization,
98-99% is wasted in the busy wait loop.
I've been told that the usual "better" approaches, like using select()
to sleep while waiting for new packets, do not work, because (??) the
arrival rate is larger than the time quantum (1 ms on recent kernels?).
I'm very open to suggestions, opinions, ideas...
I'll also take links to papers / articles discussing implementation of
similar systems.
(I'm working with kernel 2.6.14.6 in case it matters.)
|