io_uring_set_iowait(3) | liburing Manual | io_uring_set_iowait(3) |
NAME
io_uring_set_iowait - toggle of iowait usage when waiting on CQEs
SYNOPSIS
#include <liburing.h>
int io_uring_set_iowait(struct io_uring *ring, bool enable_iowait);
DESCRIPTION
By default, io_uring marks a waiting task as being in iowait if it's sleeping waiting on events and there are pending requests. This isn't necessarily always useful, and may be confusing on non-storage setups where iowait isn't expected. It can also cause extra power usage by preventing the CPU from entering lower sleep states.
The io_uring_set_iowait(3) function allows the user to toggle this behavior. If enable_iowait is set to true, the iowait behavior is enabled. If it is set to false, the iowait behavior is disabled. The iowait behavior is enabled by default when a ring is created.
If the iowait is disabled, the submit functions will set IORING_ENTER_NO_IOWAIT in the flags argument to io_uring_enter(2).
If the kernel supports this feature, it will be marked by having the IORING_FEAT_NO_IOWAIT feature flag set.
Available since kernel 6.15.
RETURN VALUE
On success, io_uring_set_iowait(3) returns 0. On failure, it returns -EOPNOTSUPP.
SEE ALSO
io_uring_enter(2), io_uring_submit(3), io_uring_submit_and_wait(3)
July 27, 2025 | liburing-2.12 |