You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When benchmarking an echo server written with io-uring, I found adding a poll_add sqe before readv/recvmsg could result in about 30% performance boost:
131729 request/sec VS 98694 request/sec using rust_echo_bench.
That was unexpected. AFAIK readv/recvmsg is async operation itself, adding a poll_add sqe won't help but result in extra context switch ( because it will awake io_uring_enter ).
After some investigation, I found program without poll_add will create lots of kernel processes called io_wqe_worker. But program with poll_add won't.
Don't know how poll_add works, but it seems that poll_add has much lower cost then async read. Is it expected? And maybe a silly question, could we implement async read as poll-add and nonblocking read?
The text was updated successfully, but these errors were encountered:
CarterLi
added a commit
to CarterLi/liburing4cpp
that referenced
this issue
Feb 7, 2020
When benchmarking an echo server written with io-uring, I found adding a poll_add sqe before readv/recvmsg could result in about 30% performance boost:
https://github.com/CarterLi/io_uring-echo-server/blob/switch/io_uring_echo_server.c#L14
131729 request/sec
VS98694 request/sec
using rust_echo_bench.That was unexpected. AFAIK
readv/recvmsg
is async operation itself, adding a poll_add sqe won't help but result in extra context switch ( because it will awake io_uring_enter ).After some investigation, I found program without poll_add will create lots of kernel processes called
io_wqe_worker
. But program with poll_add won't.Don't know how poll_add works, but it seems that poll_add has much lower cost then async read. Is it expected? And maybe a silly question, could we implement async read as poll-add and nonblocking read?
The text was updated successfully, but these errors were encountered: