Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2009 15:45:43 +0300
From:      Dmitriy <_pppp@mail.ru>
To:        Luigi Rizzo <rizzo@iet.unipi.it>
Cc:        freebsd-net@freebsd.org, Andrew Brampton <brampton+freebsd-net@gmail.com>
Subject:   Re[2]: Interrupts + Polling mode (similar to Linux's NAPI)
Message-ID:  <E1LnBRP-0004FN-00._pppp-mail-ru@f86.mail.ru>
In-Reply-To: <20090327111654.GA95104@onelab2.iet.unipi.it>
References:  <20090327111654.GA95104@onelab2.iet.unipi.it>

next in thread | previous in thread | raw e-mail | index | archive | help


-----Original Message-----
From: Luigi Rizzo <rizzo@iet.unipi.it>
To: Andrew Brampton <brampton+freebsd-net@gmail.com>
Date: Fri, 27 Mar 2009 12:16:54 +0100
Subject: Re: Interrupts + Polling mode (similar to Linux's NAPI)

> 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.

Well, polling(4) usually reduces the CPU load. But this is not essential for modern CPUs, except some software-only NICs (namely, Realtek 8139). It provides an average of 0.5ms delay for a packet delivery  which is not suitable for many usage patterns, though.

> > > 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.

I'd rather say "no more than N packets for the recent T seconds".

> 
> cheers
> luigi
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
> 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1LnBRP-0004FN-00._pppp-mail-ru>