Message ID | 20220516162118.155763-1-axboe@kernel.dk (mailing list archive) |
---|---|
Headers | show |
Series | Add support for ring mapped provided buffers | expand |
On 5/17/22 00:21, Jens Axboe wrote: > Hi, > > This series builds to adding support for a different way of doing > provided buffers, which is a lot more efficient than the existing scheme > for high rate of consumption/provision of buffers. The interesting bits > here are patch 3, which also has some performance numbers an an > explanation of it. > > Patch 1 adds NOP support for provided buffers, just so that we can > benchmark the last change. > > Patch 2 just abstracts out the pinning code. > > Patch 3 adds the actual feature. > > This passes the full liburing suite, and various test cases I adopted > to use ring provided buffers. > > v6: > - Change layout so that 'head' overlaps with reserved field in first > buffer, avoiding the weird split of first page having N-1 buffers and > the rest N (Dylan) > - Rebase on current kernel bits > - Fix missing ring unlock on out-of-bufs > - Fix issue in io_recv() > > Can also be found in my git repo, for-5.19/io_uring-pbuf branch: > > https://git.kernel.dk/cgit/linux-block/log/?h=for-5.19/io_uring-pbuf > > and there's an associated liburing branch too: > > https://git.kernel.dk/cgit/liburing/log/?h=huge should be the buf-ring branch I guess > > fs/io_uring.c | 323 +++++++++++++++++++++++++++++----- > include/uapi/linux/io_uring.h | 36 ++++ > 2 files changed, 319 insertions(+), 40 deletions(-) >
On 5/17/22 8:20 AM, Hao Xu wrote: > On 5/17/22 00:21, Jens Axboe wrote: >> Hi, >> >> This series builds to adding support for a different way of doing >> provided buffers, which is a lot more efficient than the existing scheme >> for high rate of consumption/provision of buffers. The interesting bits >> here are patch 3, which also has some performance numbers an an >> explanation of it. >> >> Patch 1 adds NOP support for provided buffers, just so that we can >> benchmark the last change. >> >> Patch 2 just abstracts out the pinning code. >> >> Patch 3 adds the actual feature. >> >> This passes the full liburing suite, and various test cases I adopted >> to use ring provided buffers. >> >> v6: >> - Change layout so that 'head' overlaps with reserved field in first >> buffer, avoiding the weird split of first page having N-1 buffers and >> the rest N (Dylan) >> - Rebase on current kernel bits >> - Fix missing ring unlock on out-of-bufs >> - Fix issue in io_recv() >> >> Can also be found in my git repo, for-5.19/io_uring-pbuf branch: >> >> https://git.kernel.dk/cgit/linux-block/log/?h=for-5.19/io_uring-pbuf >> >> and there's an associated liburing branch too: >> >> https://git.kernel.dk/cgit/liburing/log/?h=huge > > should be the buf-ring branch I guess Oops yes indeed.