On Mon, Aug 20, 2012 at 2:42 PM, Stefan Fritsch <s...@sfritsch.de> wrote: > On Mon, 20 Aug 2012, Mike Belopuhov wrote: >> >> On Mon, Aug 20, 2012 at 1:42 PM, Stefan Fritsch <s...@sfritsch.de> 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. >
only if OACTIVE is not set. > >> 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. that sucks, but that doesn't mean you have to abuse watchdog. > Are there already NICs using polling in OpenBSD? no, cause all the real hardware worth mentioning does moderation.