io_uring_prep_writev

Mark Reed
2019-11-24T15:34:13Z

Jens et al,

I wrote a C event loop library based on io_uring and a KV store similar to memcached using it. Mrcache is 4x faster using io_uring vs epoll so thank you guys for the work on this. I'm looking forward to 5.5 and am testing on 5.2.14 right now.

https://github.com/MarkReedZ/mrloop
https://github.com/MarkReedZ/mrcache

I'm currently using write instead of io_uring_prep_writev when writing to the socket and have a couple questions:

1. If I queue up 50 writevs to a socket will they write in order?

2. If the client backs up will those writevs return or will they simply wait?

3. Would you expect io_uring_prep_writev to be faster than using write on the socket? My initial benchmarks had a 50 deep GET pipeline which would do a single writev with 50 iovs and that was slower than copying to an output buffer and looping on write when full. Perhaps I had something wrong with the benchmark at the time - if you think so I'll try again.

Thanks again,

Mark