When using TASKRUN-related options, how often must the application perform syscalls? #885
Closed
sharpobject
started this conversation in
General
Replies: 2 comments
-
If you use SQPOLL, then those options don't really apply as the SQPOLL thread using normal wakeups for notification anyway, and doesn't transition between user/kernel which would impact when task_work is run. |
Beta Was this translation helpful? Give feedback.
0 replies
-
Sounds great! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hello,
I have an application that performs 0 steady-state syscalls and relies on kernel-side busy polling and userspace busy polling to talk to the world via io_uring. I have read in this handy guide to using io_uring for networking in current_year that I should consider setting some combination of IORING_SETUP_COOP_TASKRUN, IORING_SETUP_TASKRUN_FLAG, and IORING_SETUP_DEFER_TASKRUN. I think that if I use the former things, task_work will be done whenever I do any syscall, and if I use the latter thing, task_work will be done whenever I do the io_uring_enter syscall. Currently I do no syscalls, so if I would like to start using this stuff I would need to also start doing some syscalls. How often must syscalls be performed? Are these syscalls and this task_work ever in the critical path for receiving or sending bytes on already-established sockets? If so, and if this is sufficiently rare, we would sort of rather throw those sockets away and get new ones rather than do a syscall. Is there a reasonable way to do that?
Thanks
Beta Was this translation helpful? Give feedback.
All reactions