Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jun 2009 18:19:25 +0400
From:      Igor Sysoev <is@rambler-co.ru>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        freebsd-net@FreeBSD.org
Subject:   Re: bge interrupt coalescing sysctls
Message-ID:  <20090618141925.GG60354@rambler-co.ru>
In-Reply-To: <20090611114120.I21056@delplex.bde.org>
References:  <20090610123301.GE40250@rambler-co.ru> <20090611114120.I21056@delplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jun 11, 2009 at 11:54:29AM +1000, Bruce Evans wrote:

> On Wed, 10 Jun 2009, Igor Sysoev wrote:
> 
> >For a long time I used Bruce Evans' patch to tune bge interrupt coalescing:
> >http://lists.freebsd.org/pipermail/freebsd-net/2007-November/015956.html
> >However, recent commit SVN r192478 in 7-STABLE (r192127 in HEAD) had broken
> >the patch. I'm not sure how to fix the collision, and since I do not
> >use dynamic tuning
> 
> That commit looked ugly (lots of internal API changes and bloat in interrupt
> handlers in many network drivers to support polling which mostly shouldn't
> be supported at all and mostly doesn't use the interrupt handlers).
> 
> >I has left only static coalescing parameters in the patch
> >and has added a loader tunable to set number of receive descriptors and
> >read only sysctl to read the tunable. I usually use these parameters:
> >
> >/boot/loader.conf:
> >hw.bge.rxd=512
> >
> >/etc/sysctl.conf:
> >dev.bge.0.rx_coal_ticks=500
> >dev.bge.0.tx_coal_ticks=10000
> >dev.bge.0.rx_max_coal_bds=64
> 
> These rx settings give to high a latency for me.

Probably, however, I use this on a host that has 6000 packets/s.

> >dev.bge.0.tx_max_coal_bds=128
> ># apply the above parameters
> >dev.bge.0.program_coal=1
> >
> >Could anyone commit it ?
> 
> Not me, sorry.
> 
> The patch is quite clean.  If I committed then I would commit the
> dynamic coalescing configuration separately anyway.

So have you any objections if some one else will commit this patch ?

> You can probably make hw.bge.rxd a sysctl too (it would take a down/up
> to get it changed, but that is already needed for too many parameters
> in network drivers anyway).  I should use a sysctl for the ifq length
> too.  This could be done at a high level for each driver.  Limiting
> queue lengths may be a good way to reduce cache misses, while increasing
> them is sometimes good for reducing packet loss.

Do you mean simple command sequence:

sysctl hw.bge.rxd=512
ifconfig down
ifconfig up

or SYSCTL_ADD_PROC for hw.bge.rxd ?


-- 
Igor Sysoev
http://sysoev.ru/en/



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