From owner-freebsd-net@FreeBSD.ORG Thu Jun 11 01:54:38 2009 Return-Path: Delivered-To: freebsd-net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 44BA5106566B for ; Thu, 11 Jun 2009 01:54:38 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail01.syd.optusnet.com.au (mail01.syd.optusnet.com.au [211.29.132.182]) by mx1.freebsd.org (Postfix) with ESMTP id D751F8FC17 for ; Thu, 11 Jun 2009 01:54:37 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c122-106-159-184.carlnfd1.nsw.optusnet.com.au (c122-106-159-184.carlnfd1.nsw.optusnet.com.au [122.106.159.184]) by mail01.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id n5B1sTJ5000590 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 11 Jun 2009 11:54:35 +1000 Date: Thu, 11 Jun 2009 11:54:29 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Igor Sysoev In-Reply-To: <20090610123301.GE40250@rambler-co.ru> Message-ID: <20090611114120.I21056@delplex.bde.org> References: <20090610123301.GE40250@rambler-co.ru> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-net@FreeBSD.org Subject: Re: bge interrupt coalescing sysctls X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Jun 2009 01:54:38 -0000 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. > 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. 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. Bruce