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.

Reply via email to