-
Notifications
You must be signed in to change notification settings - Fork 71
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
eio_linux backend hangs #409
Comments
It's because it submits enough requests to fill uring's SQE buffer. Then uring returns It would probably also be better if eio_linux just failed the request completely if it really can't get an SQE (even after submit). That should never happen under normal use, and it's probably better to let the user know the system is badly overloaded. /cc @haesbaert @TheLortex (this is with the dev version of uring; the current uring 0.4 release also fails but for a different reason: it runs out of space in its collection of in-progress requests and gives up) |
My instinct would be to make the application do a eio/lib_eio_linux/eio_linux.ml Line 290 in 80f1486
In this case if read_fixed or write_fixed got None, we would try a submit once before returning. Since EIO already ignores the return of submit , we're not worse than before.
I wouldn't want uring doing submits by itself when needed since it discards state. In fact when |
We may fail to submit a job because the SQE queue is full. Previously we would wait until some existing request completed, but that might never happen. Instead, we just flush the SQE queue and retry. Fixes ocaml-multicore#409.
We may fail to submit a job because the SQE queue is full. Previously we would wait until some existing request completed, but that might never happen. Instead, we just flush the SQE queue and retry. Fixes ocaml-multicore#409.
Consider the following program that uses
Eio.Net.accept_fork
to establish a server on port 8081 and attempts to establish client connections to this server. The number of clients is user configurable via cli option-clients
. If the number <= 62, then we get one output as followsHowever, if the number is >= 63, then the program doesn't even print the above and just (hangs?).
The text was updated successfully, but these errors were encountered: