From owner-cvs-src@FreeBSD.ORG Sat Mar 20 13:37:52 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D149516A4CE; Sat, 20 Mar 2004 13:37:52 -0800 (PST) Received: from cs.rice.edu (cs.rice.edu [128.42.1.30]) by mx1.FreeBSD.org (Postfix) with ESMTP id AB0AF43D2D; Sat, 20 Mar 2004 13:37:52 -0800 (PST) (envelope-from alc@cs.rice.edu) Received: from localhost (calypso.cs.rice.edu [128.42.1.127]) by cs.rice.edu (Postfix) with ESMTP id E78F34AA8A; Sat, 20 Mar 2004 15:37:51 -0600 (CST) Received: from cs.rice.edu ([128.42.1.30]) by localhost (calypso.cs.rice.edu [128.42.1.127]) (amavisd-new, port 10024) with LMTP id 24569-01-19; Sat, 20 Mar 2004 15:37:51 -0600 (CST) Received: by cs.rice.edu (Postfix, from userid 19572) id 6310A4ADC5; Sat, 20 Mar 2004 15:37:51 -0600 (CST) Date: Sat, 20 Mar 2004 15:37:51 -0600 From: Alan Cox To: Nate Lawson Message-ID: <20040320213751.GW6197@cs.rice.edu> References: <20040320193633.8E25416A553@hub.freebsd.org> <20040320124836.Q23876@root.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040320124836.Q23876@root.org> User-Agent: Mutt/1.3.28i X-Virus-Scanned: by amavis-20030616-p7 at cs.rice.edu cc: Alan Cox cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/amd64/amd64 uio_machdep.c src/sys/conf files.amd64 src/sys/sys uio.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Mar 2004 21:37:53 -0000 On Sat, Mar 20, 2004 at 12:50:12PM -0800, Nate Lawson wrote: > On Sat, 20 Mar 2004, Alan Cox wrote: > > FreeBSD src repository > > > > Modified files: > > sys/conf files.amd64 > > sys/sys uio.h > > Added files: > > sys/amd64/amd64 uio_machdep.c > > Log: > > Introduce uiomove_fromphys(). This is a variant of uiomove() that takes > > a collection of physical pages as the source. On amd64 it is implemented > > using the direct virtual-to-physical map. > > > > Revision Changes Path > > 1.1 +131 -0 src/sys/amd64/amd64/uio_machdep.c (new) > > 1.30 +1 -0 src/sys/conf/files.amd64 > > 1.34 +3 -0 src/sys/sys/uio.h > > Excellent. FreeBSD hits the 21st century, where we flip back to P->V. > The funny part is that I'm seeing even greater performance gains from using this API on a 32-bit P4 Xeon. There, we don't have a direct virtual-to-physical mapping, so I use sf_buf_alloc() and sf_buf_free(). For a prototype pipe reimplementation that eliminates the ephemeral mappings and uses uiomove_fromphys(), the lmbench pipe bandwidth is going from ~1GB/sec to ~1.7GB/sec. This surprised me at first, but it's consistent with Jeff R's reported numbers for how expensive invlpg is on P4s. Regards, Alan