cvs commit: src/sys/amd64/amd64 uio_machdep.c src/sys/conf
files.amd64 src/sys/sys uio.h
Alan Cox
alc at cs.rice.edu
Sat Mar 20 13:37:53 PST 2004
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
More information about the cvs-src
mailing list