Hi Avi,
在 4/13/22 6:33 PM, Avi Kivity 写道:
Unfortunately, only ideas, no patches. But at least the first seems very
easy.
- IORING_OP_MEMCPY_IMMEDIATE - copy some payload included in the op
itself (1-8 bytes) to a user memory location specified by the op.
Linked to another op, this can generate an in-memory notification useful
for busy-waiters or the UMWAIT instruction
This would be useful for Seastar, which looks at a timer-managed memory
location to check when to break computation loops.
- IORING_OP_MEMCPY - asynchronously copy memory
Some CPUs include a DMA engine, and io_uring is a perfect interface to
exercise it. It may be difficult to find space for two iovecs though.
I have a question about the 'DMA' here, do you mean DMA device for
memory copy? My understanding is you want async memcpy so that the
cpu can relax when the specific hardware is doing memory copy. the
thing is for cases like busy waiting or UMAIT, the length of the memory
to be copied is usually small(otherwise we don't use busy waiting or
UMAIT, right?). Then making it async by io_uring's iowq may introduce
much more overhead(the context switch).
Regards,
Hao