Skip to content
Snippets Groups Projects
  • Florian Fischer's avatar
    50c965e4
    [IO] overhaul SQPOLL support · 50c965e4
    Florian Fischer authored
    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.
    50c965e4
    History
    [IO] overhaul SQPOLL support
    Florian Fischer authored
    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.