Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2009 12:16:54 +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:  <20090327111654.GA95104@onelab2.iet.unipi.it>
In-Reply-To: <d41814900903270405p19d26d94r7c7351adca05f283@mail.gmail.com>
References:  <d41814900903261747v28d3de29t10bb1b8128de635c@mail.gmail.com> <20090327071742.GA87385@onelab2.iet.unipi.it> <d41814900903270405p19d26d94r7c7351adca05f283@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Mar 27, 2009 at 11:05:00AM +0000, Andrew Brampton wrote:
> 2009/3/27 Luigi Rizzo <rizzo@iet.unipi.it>:
> > 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.
> 
> oh, I was under the impression that polling spun in a tight loop, thus
> using 100% of the processor. After a quick test I see this is not the
> case. I assume it will get to 100% CPU load if I saturate my network.

Well the motivation for the original polling code in FreeBSD was
to keep the CPU usage under strict control -- you could set the
max CPU fraction that you wanted to dedicate to packet handling,
and you were guaranteed not to exceed that fraction.

> > 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.
> 
> Looking at Linux's logic, it appears to poll until there are no more
> packets, and thus re-enables interrupts.

the complete definition should be "no more packets for X seconds".
Enabling and disabling interrupts is slightly expensive so you
don't want to do it too often.

cheers
luigi



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