Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
reactor: io_uring: enable some optimization flags
Enable some optimization flags in an attempt to improve performance with io_uring: IORING_SETUP_COOP_TASKRUN - prevents a completion from interrupting the reactor if it is running. Requires that the reactor issue an io_uring_enter system call in a timely fashion, but thanks to the task quota timer, we do. IORING_SETUP_TASKRUN_FLAG - sets up a flag that notifies the reactor that the kernel has pending completions that it did not process. This allows the reactor to issue an io_uring_enter even if it has no pending submission queue entries or completion queue entries (e.g. it indicates a third queue, in the kernel, is not empty). IORING_SETUP_SINGLE_ISSUER - elides some locking by guaranteeing that only a single thread plays with the ring; this happens to be true for us. IORING_SETUP_DEFER_TASKRUN - batches up completion processing in an attempt to get some more performance. This flags bump up the dependencies to Linux 6.1 and liburing 2.2. This seems worthwhile as right now io-uring lags behind linux-aio (which processes completions from interrupt context and therefore doesn't need all these optimizations). After this exercise, io_uring is still slower than linux-aio.
- Loading branch information