Date: Sat, 20 Mar 2004 15:37:51 -0600 From: Alan Cox <alc@cs.rice.edu> To: Nate Lawson <nate@root.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 Message-ID: <20040320213751.GW6197@cs.rice.edu> In-Reply-To: <20040320124836.Q23876@root.org> References: <20040320193633.8E25416A553@hub.freebsd.org> <20040320124836.Q23876@root.org>
index | next in thread | previous in thread | raw e-mail
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, Alanhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040320213751.GW6197>
