io_uring
Enhancements
io_uring
is a system call interface to manage storage device
asynchronous I/O operations. Several features and improvements are provided in the
implementation that's available in UEK 8 and some of these might have been backported
to previous UEK releases. Updates include many optimizations for security and
performance. Significant new features and changes include:
-
io_uring
now supports sending and receiving T10 Protection Information along with the data buffer. -
Operations for
getsockopt()
,setsockopt()
,bind()
,listen()
andwaitid()
. -
Mechanism to omit system calls with IORING_SETUP_SQPOLL at setup time. A call to
io_uring_enter()
starts a kernel thread that occasionally polls the submission queue and automatically submits any requests found there. -
Batch request for
recv()
calls and forreads()
. -
IORING_OP_SENDZC to perform Zero-copy writes.
-
Several Ring code optimizations:
-
Rings and submission queue can be in user space memory, such as huge pages.
-
One ring is now able to signal another to speed up message requests.
-
Ring related work can be deferred until an application asks for it.
-
-
io_uring
improvements in buffered writes, in XFS. -
io_uring
optimization in XFS and Ext4 can handle multiple direct-I/O writes to a file in parallel. -
Absolute timeouts, along with the relative timeouts that were already available, are now possible.