From owner-svn-src-head@FreeBSD.ORG Mon Mar 17 08:27:05 2014 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 872BF539; Mon, 17 Mar 2014 08:27:05 +0000 (UTC) Received: from cyrus.watson.org (cyrus.watson.org [198.74.231.69]) by mx1.freebsd.org (Postfix) with ESMTP id 5CE70188; Mon, 17 Mar 2014 08:27:05 +0000 (UTC) Received: from [10.0.1.9] (host81-156-92-9.range81-156.btcentralplus.com [81.156.92.9]) by cyrus.watson.org (Postfix) with ESMTPSA id 84A6846B0C; Mon, 17 Mar 2014 04:27:03 -0400 (EDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.2 \(1874\)) Subject: Re: svn commit: r263198 - in head/sys: amd64/conf conf net netinet netinet6 sys From: "Robert N. M. Watson" In-Reply-To: <20140317075436.GA5864@walton.maths.tcd.ie> Date: Mon, 17 Mar 2014 08:26:55 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201403150057.s2F0vofg081606@svn.freebsd.org> <20140317075436.GA5864@walton.maths.tcd.ie> To: David Malone X-Mailer: Apple Mail (2.1874) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Mar 2014 08:27:05 -0000 On 17 Mar 2014, at 07:54, David Malone wrote: >> (1) Merge a software implementation of the Toeplitz hash specified = in >> RSS implemented by David Malone. This is used to allow suitable >> pcbgroup placement of connections before the first packet is >> received from the NIC. Software hashing is generally avoided, >> however, due to high cost of the hash on general-purpose CPUs. >=20 > I could look at a faster software implementation, but I guess most of > the value is when hashing is done on the NIC. In my benchmarking (a couple of years ago) the software path never = really turned up a lot. If you end up with a flow migrating from an RSS = NIC to a non-RSS NIC, you fall back on the 'reservation' hash table, = using the conventional hash and picking up contention, but you don't end = up doing the software version of Toeplitz per-packet. The only reason we = need a software implementation (currently) is to do an initial placement = of a new outbound flow into the hash table prior to receiving a packet = with the hardware-generated hash on it. For the inbound direction, we = can pick it up from the first packet. (Although, actually, we also need = to do it for inbound flows that come from non-RSS NICs -- or localhost = or such). Robert=