-
Notifications
You must be signed in to change notification settings - Fork 3
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
Explore io_uring capabilities #141
Comments
I'm abandoning my experiment with The current test setup I have is that I'm creating two At this point, I want to take a known working example and inspect Here's the print-out of my test before calling
|
After pursuing the next test of simply writing twice to stdout via I wasn't updating the array, so it effectively had
and I want it to look more like
I fixed it and now both tests work. |
We're in a good place with the literature and experiments. Moving on to design and implementation. |
Prep for #142
Literature
Questions
eventfd
. We can even set upeventfd
from an executor's ioring to watch all it's actor iorings.io_uring_setup
returns anfd
, and we must use thatfd
tommap
via shared memory all of the data structures for an ioring. There is no option in theio_uring_setup
params that indicate we can deviate from this behavior.user_data
field. We use it as the key.poll
withIORING_POLL_ADD_MULTI
enabled. However, it's always possible to tell when there will be no more completions by checking forIORING_CQE_F_MORE
in the CQE.io_async_cancel
inio_uring.c
, which iterates through every task, callsio_async_cancel_one
on them and returns on the firstENOENT
result (aka, one matching task was found).user_data
field is going to point to that memory, so every submission will be unique.How big are our urings? Say for high throughput socket operations.io_uring_setup
system call. There's no way to change this behavior.Can we start a kernel io thread, but never wake it up unless we start hitting a bottleneck with submissions?tail
only requires a read barrier.Tests
user_data
filled in and can read corresponding successful (res == 0
) completions.callio_uring_enter
and then immediately spin for a bit. See if our spinning delays the kernel from dispatching the submission.io_uring_enter
will return. It will not block.The text was updated successfully, but these errors were encountered: