-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Group operations #68
Labels
enhancement
New feature or request
Milestone
Comments
9 tasks
How to group instructions in LSIO's new trait-based IO interface?The latest design for LSIO defines the "instruction interface" for the IO crates using a |
JackKelly
added a commit
that referenced
this issue
May 1, 2024
|
See this comment onwards: #104 (comment) |
15 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Allow users to submit operations in groups. All operations in group n will be delivered to the user before any operations in group n+1.
Related
IoUringLocal::get*
methods which useio_uring
under the hood. #30 (especially from Max's comment onwards)Implementation ideas
1) Use
IOSQE_IO_DRAIN
To quote the liburing manual page for
io_uring_enter
:This is perfect when groups have multiple files: we'd set
IOSQE_IO_DRAIN
on the first SQE of each group.But we might not want to set
IOSQE_IO_DRAIN
on every SQE, if we have a tiny number of ops per group (because then we're forcing the storage subsystem to load files sequentially). But let's benchmark it and see how it performs, before implementing a more complicated strategy.2) Fill the SQ once, but don't top up the SQ until group n has finished
Let's say the user submits 64 groups, and each group has only 1 file. And let's say the SQ size is 32. Maybe we'd fill the SQ with 32 files (1 file from each of 32 groups) in one go. But we'd only top up the SQ when we deliver a buffer to the user. So we'd top up the SQ with 1 file once the first group's data is delivered to the user. And top up again when the second group is delivered. etc.
The text was updated successfully, but these errors were encountered: