Skip to content
Snippets Groups Projects
Commit 33150a26 authored by Florian Fischer's avatar Florian Fischer
Browse files

[IO] prevent concurrent access to io_uring SQs

Futures completed by the globalCompleter thread are resubmitted if
if needed into the new global IoContext of the Runtime handled by the
globalCompleter.

Additional Changes:

* use two meson options io_uring_worker_entries and io_uring_global_entries
  to configure the amount of entries in the io_urings.
* Initialize all worker IoContexts and submit their eventfds to the globalIo
  before starting the globalCompleter in order to make synchronizing the SQ of the
  globalIo unnecessary
* delete all allocated IoContexts
* don't use a static IoContext member variable to access the Runtime's
  globalIo. Store the global IoContext in the runtime object.
* Commit each sqe immediately to the io_uring to prevent full SQs.
  This and the fact that the kernel consumes committed sqes emptying the SQ
  make busy loops around io_uring_get_sqe unnecessary.
* handle bool and "raw" meson options differently to prevent
  comparison of different types
parent deddef9f
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment