This patchset is the follow-on to my previous RFC which implements a
set of enhancements to buffer registration consistent with existing file
registration functionality:
I like the idea of generic resource handling
- buffer registration updates IORING_REGISTER_BUFFERS_UPDATE
IORING_OP_BUFFERS_UPDATE
Do you need it for something specific?
Incremental buffer registration, see below.
- readv/writev with fixed buffers IOSQE_FIXED_BUFFER
Why do we need it?
It makes fixed files/buffers APIs more consistent, and once the initial
work of generic resource handling is done, the additional work for this
support is not much I think.
- buffer registration sharing IORING_SETUP_SHARE_BUF
IORING_SETUP_ATTACH_BUF
I haven't looked it up. What's the overhead on that?
And again, do you really need it?
For our use case, a DB instance may have a shared memory size of TB
order and very large number of processes (1000+) using that memory. The
cost of each process registering that memory could become prohibitive.
We need to allow for incremental buffer registration given the
potentially large size of the shared memory. It also makes the API
between files/buffers more consistent.
I had a chat with Jens a while back and he also felt that the static
nature of buffer registrations and the requirement to reload the full
set in case of changes was problematic.
The set is +600 lines, so just want to know that there is
a real benefit from having it.
Sure, understood.