On Ubuntu kernel 7.0.0-22-generic, a submitted 10 ms io_uring timeout very
rarely blocks for hundreds of milliseconds:
expected timeout: 10 ms observed waits: 224 939 ms
In my testing I could see this with both:
IORING_ENTER_GETEVENTS | IORING_ENTER_EXT_ARG
- classic
IORING_OP_TIMEOUT
A minimal reproducer with one permanently pending POLL_ADD and repeated timeout waits reproduces the issue (an outstanding RECV also did reproduce it).
Example of the reproducer: SLOW iteration=327214 wait=939.594ms
With strace I could see observe the following:
io_uring_enter(... IORING_ENTER_GETEVENTS ...) <0.897755>
System-wide rtla timerlat showed low normal timer latency, with maxima around 24 us.
On Ubuntu kernel 7.0.0-22-generic, a submitted 10 ms
io_uringtimeout veryrarely blocks for hundreds of milliseconds:
expected timeout: 10 ms observed waits: 224 939 msIn my testing I could see this with both:
IORING_ENTER_GETEVENTS | IORING_ENTER_EXT_ARGIORING_OP_TIMEOUTA minimal reproducer with one permanently pending
POLL_ADDand repeated timeout waits reproduces the issue (an outstandingRECValso did reproduce it).Example of the reproducer:
SLOW iteration=327214 wait=939.594msWith
straceI could see observe the following:io_uring_enter(... IORING_ENTER_GETEVENTS ...) <0.897755>System-wide
rtlatimerlat showed low normal timer latency, with maxima around 24 us.