Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2009 08:17:42 +0100
From:      Luigi Rizzo <rizzo@iet.unipi.it>
To:        Andrew Brampton <brampton+freebsd-net@gmail.com>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Interrupts + Polling mode (similar to Linux's NAPI)
Message-ID:  <20090327071742.GA87385@onelab2.iet.unipi.it>
In-Reply-To: <d41814900903261747v28d3de29t10bb1b8128de635c@mail.gmail.com>
References:  <d41814900903261747v28d3de29t10bb1b8128de635c@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Mar 27, 2009 at 12:47:45AM +0000, 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?

The load of polling is pretty low (within 1% or so) even with
polling. The advantage of having interrupts is faster response
to incoming traffic, not CPU load.

There is nothing difficult in having both active, except figuring
out a good logic for when to disable polling on an interface
that has been quiet for a while.

I don't know what is the status of polling these days -- when i
wrote it, the architecture was designed for UP kernels, and I
don't know if/how it has been revised to deal efficiently with
the SMP kernels we have now (in other words: one or multiple
polling loops, interaction with interrupt threads, etc.)

	cheers
	luigi



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090327071742.GA87385>