public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCHSET 0/3] Provide more efficient buffer registration
@ 2024-09-11 20:03 Jens Axboe
  2024-09-11 20:03 ` [PATCH 1/3] io_uring/rsrc: clear 'slot' entry upfront Jens Axboe
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Jens Axboe @ 2024-09-11 20:03 UTC (permalink / raw)
  To: io-uring

Hi,

Pretty much what the subject line says, it's about 25k to 40k times
faster to provide a way to duplicate an existing rings buffer
registration than it is manually map/pin/register the buffers again
with a new ring.

Patch 1 is just a prep patch, patch 2 adds refs to struct
io_mapped_ubuf, and patch 3 finally adds the register opcode to allow
a ring to duplicate the registered mappings from one ring to another.

This came about from discussing overhead from the varnish cache
project for cases with more dynamic ring/thread creation.

 include/uapi/linux/io_uring.h |  8 ++++
 io_uring/register.c           |  6 +++
 io_uring/rsrc.c               | 89 ++++++++++++++++++++++++++++++++++-
 io_uring/rsrc.h               |  2 +
 4 files changed, 104 insertions(+), 1 deletion(-)

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 6+ messages in thread
* [PATCHSET v2 0/3] Provide more efficient buffer registration
@ 2024-09-11 20:29 Jens Axboe
  2024-09-11 20:29 ` [PATCH 2/3] io_uring/rsrc: add reference count to struct io_mapped_ubuf Jens Axboe
  0 siblings, 1 reply; 6+ messages in thread
From: Jens Axboe @ 2024-09-11 20:29 UTC (permalink / raw)
  To: io-uring

Hi,

Pretty much what the subject line says, it's about 25k to 40k times
faster to provide a way to duplicate an existing rings buffer
registration than it is manually map/pin/register the buffers again
with a new ring.

Patch 1 is just a prep patch, patch 2 adds refs to struct
io_mapped_ubuf, and patch 3 finally adds the register opcode to allow
a ring to duplicate the registered mappings from one ring to another.

This came about from discussing overhead from the varnish cache
project for cases with more dynamic ring/thread creation.

Since v1:
- Actually send out the right version...

 include/uapi/linux/io_uring.h |  8 +++
 io_uring/register.c           |  6 +++
 io_uring/rsrc.c               | 95 ++++++++++++++++++++++++++++++++++-
 io_uring/rsrc.h               |  2 +
 4 files changed, 110 insertions(+), 1 deletion(-)

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-09-11 20:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-11 20:03 [PATCHSET 0/3] Provide more efficient buffer registration Jens Axboe
2024-09-11 20:03 ` [PATCH 1/3] io_uring/rsrc: clear 'slot' entry upfront Jens Axboe
2024-09-11 20:03 ` [PATCH 2/3] io_uring/rsrc: add reference count to struct io_mapped_ubuf Jens Axboe
2024-09-11 20:03 ` [PATCH 3/3] io_uring: add IORING_REGISTER_COPY_BUFFERS method Jens Axboe
2024-09-11 20:13 ` [PATCHSET 0/3] Provide more efficient buffer registration Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2024-09-11 20:29 [PATCHSET v2 " Jens Axboe
2024-09-11 20:29 ` [PATCH 2/3] io_uring/rsrc: add reference count to struct io_mapped_ubuf Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox