1 # io_uring prototypes 2 3 ## 1. Poller implementation 4 5 Simple Poller implementation that uses `IORING_OP_POLL_ADD` to poll a file descriptor. 6 Selected when run with `-Djdk.io_uring=true`. 7 8 Functional, and suited to pollerMode=3 (`io_uring` instance per carrier thread), 9 but will not perform as well as the `epoll` based Poller. Batching of submits, to 10 reduce calls to `io_uring_enter`, was prototyped but the batching added latency 11 and reduced performance overall. 12 13 14 ## 2. Poller implementation with submission queue polling 15 16 (not in loom repo at this time) 17 18 Builds on prototype 1 but uses `IORING_SETUP_SQPOLL` to use a kernel thread to poll 19 the submission queue. 20 21 ## 3. Blocking read/write implemented on async readv/writev 22 23 (not in loom repo at this time) 24 25 Uses `IORING_OP_READV` and `IORING_OP_WRITEV` with caller owned buffer and iovec. 26 27 28 ## 4. Blocking read/write implemented on async readv/writev with registered buffers 29 30 (not in loom repo at this time) 31 32 Uses `IORING_OP_READ_FIXED` and `IORING_OP_WRITE_FIXED` with buffers that are 33 registered with kernel.