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_uringnow 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_uringimprovements in buffered writes, in XFS. -
io_uringoptimization 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.