Linux No-Copy Bvec Patches Revved For The New Year As Another I/O Optimization

Written by Michael Larabel in Linux Storage on 2 January 2021 at 12:50 PM EST. 10 Comments
The Linux kernel has been seeing incredible innovations and optimizations in the I/O area in recent times from IO_uring to numerous performance enhancements. One of the recent performance enhancements seeing activity and promising results is the no-copy bvec behavior.

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.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via

Popular News This Week