Unmapped I/O
Konstantin Belousov
kostikbel at gmail.com
Thu Feb 14 19:47:37 UTC 2013
This is an update on the message
http://lists.freebsd.org/pipermail/freebsd-arch/2012-December/013672.html
The work implements the unmapped kernel I/O buffers, eliminating the
overhead of the mapping and IPIs, for most of i/o paths on the UFS
volumes. In particular, read(2)/write(2) initiated i/o, including
clustered operations and page-ins are unmapped. Also the physio is
unmapped if the geom/drivers support it.
Only ahci(4) is adopted to provide required support. Most other HBAs
which properly use bus_dmamap_load_ccb() can be trivially converted in
a way similar to ahci(4), see the changes in the patch. I did not the
conversion because I cannot test.
I consider the current patch ready to be committed into the HEAD.
Some elements of the design were discussed with Jeff Roberson. The
patch was tested by Peter Holm, a backport to stable/9 got load
testing by Scott Long. I see an ~30% reduction in the system time on
reading large files over UFS/ahci on the 4-core HTT machine.
The only big stop there is the lack of testing on non-x86 platforms.
Marius Strobl pointed out that pmap_copy_pages() for sparc64 is
incorrect. For the final commit, I will disable the unmapped buffers
on any architecture which was not tested at the time of commit.
The patch is available at
http://people.freebsd.org/~kib/misc/unmapped.13.patch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20130214/01cf9df3/attachment.sig>
More information about the freebsd-arch
mailing list