Linux No-Copy Bvec Patches Revved For The New Year As Another I/O Optimization
As explained by developer Pavel Begunkov who has been leading the no-copy bvec support work, "Currently, when iomap and block direct IO gets a bvec based iterator the bvec will be copied, with all other accounting that takes much CPU time and causes additional allocation for larger bvecs. The patchset makes it to reuse the passed in iter bvec."
This work to avoid copying bvecs during direct I/O can deliver measurable performance boosts while also lowering the memory usage. Pavel noted that in tests with a 4K block size a test system went from 1208k to 1222k IOPS with these patches. For a 64K block size it went up from 699k IOPS to 982k IOPS.
With the latest patches are more numbers for those interested. The work is currently up to its second revision after the original "request for comments" patches. It's quite possible we will see this no-copy bvec support land in a new kernel cycle in the near term as yet another Linux I/O performance enhancement.