-
- Downloads
[IO] overhaul SQPOLL support
Two meson options control the io_uring sqpoll feature: * io_uring_sqpoll - enable sq polling * io_uring_shared_poller - share the polling thread between all io_urings Since 5.12 the IORING_SETUP_ATTACH_WQ only causes sharing of poller threads not the work queues. See: https://github.com/axboe/liburing/issues/349 When using SQPOLL the userspace has no good way to know how many sqes the kernel has consumed therefore we wait for available sqes using io_uring_sqring_wait if there was no usable sqe. Remove the GlobalIoContext::registerLock and register all worker io_uring eventfd reads at the beginning of the completer function. Also register all the worker io_uring eventfds since they never change and it hopefully reduces overhead in the global io_uring.
Showing
- emper/Emper.hpp 2 additions, 2 deletionsemper/Emper.hpp
- emper/Runtime.cpp 1 addition, 6 deletionsemper/Runtime.cpp
- emper/io/GlobalIoContext.cpp 37 additions, 22 deletionsemper/io/GlobalIoContext.cpp
- emper/io/GlobalIoContext.hpp 0 additions, 6 deletionsemper/io/GlobalIoContext.hpp
- emper/io/IoContext.cpp 24 additions, 15 deletionsemper/io/IoContext.cpp
- emper/io/IoContext.hpp 26 additions, 2 deletionsemper/io/IoContext.hpp
- meson.build 7 additions, 3 deletionsmeson.build
- meson_options.txt 5 additions, 4 deletionsmeson_options.txt
Loading
Please register or sign in to comment