On Mon, 20 Aug 2012, Mike Belopuhov wrote:
On Mon, Aug 20, 2012 at 1:42 PM, Stefan Fritsch <[email protected]> wrote:
Because the interrupt load increases by approx. 7000 per second. I think the
problem is that the backend sends packets faster than openbsd can enqueue
them. This means that the tx queue will be empty often, and each time an tx
interrupt will be triggered.


this doesn't sound right as it's the driver that decides how much
to transmit.

How so? It simply transmits all packets that are in ifp->if_snd.

btw is there a interrupt moderation mechanism available?

Unfortunately not one that is time based. It is only possible to defer
the interrupt for a certain amount of packets (with the RingEventIdx feature) or until the last descriptor is removed from the ring (with the NotifyOnEmpty feature). But the latter does not help much and the former is not usable unless you have some timer that cleans up resources if no more packets are sent.

For the rx interrupts it is even worse. I don't see any sensible way to reduce interrupts without switching to polling when there are lots of inbound packets. Are there already NICs using polling in OpenBSD?

Reply via email to