Interrupts + Polling mode (similar to Linux's NAPI)
Sam Leffler
sam at freebsd.org
Fri Mar 27 08:55:52 PDT 2009
Andrew Brampton wrote:
> Hi,
> Linux has a feature called NAPI, which amongst other things has this
> Interrupt initiated polling mode. Whilst the network traffic is quiet
> the network interfaces use interrupts, however as soon as the load
> becomes higher polling kicks in and stays like that until the load
> drops again.
>
> I know that FreeBSD can do interrupts or polling, but not together. I
> think that that NAPI pretty neat as it provides the benefits of both
> interrupts and polling, namely low CPU load (when the network is not
> busy), and high performance. I was wondering if anyone has considered
> this approach in FreeBSD? If not why not? Is there some reason why the
> binary FreeBSD approach is better? Or is it just that no one has
> dedicated the time and effort to implement this feature?
>
NAPI is essentially interrupt moderation in s/w. As Luigi noted
elsewhere polling in freebsd is rather different with livelock avoidance
being just one of the goals. I've had several projects where people
coming from linux felt is was critical to implement NAPI or something
similar on a bsd system. In the end they found it was not a significant
win if the hardware is reasonably designed and the driver properly
tuned. Some of this relates to how the network stacks differ in
design. I think a NAPI-like facility would mostly be used for legacy
devices which is not to say it's a bad idea or that you shouldn't work
on it. Whether or not it's incorporated into the system would depend on
how much of a win it turns out to be and how intrusive it is as you'd
need to mod all the drivers.
Sam
More information about the freebsd-net
mailing list