• H
    io_uring: add timeout support for io_uring_enter() · c73ebb68
    Hao Xu 提交于
    Now users who want to get woken when waiting for events should submit a
    timeout command first. It is not safe for applications that split SQ and
    CQ handling between two threads, such as mysql. Users should synchronize
    the two threads explicitly to protect SQ and that will impact the
    performance.
    
    This patch adds support for timeout to existing io_uring_enter(). To
    avoid overloading arguments, it introduces a new parameter structure
    which contains sigmask and timeout.
    
    I have tested the workloads with one thread submiting nop requests
    while the other reaping the cqe with timeout. It shows 1.8~2x faster
    when the iodepth is 16.
    Signed-off-by: NJiufei Xue <jiufei.xue@linux.alibaba.com>
    Signed-off-by: NHao Xu <haoxu@linux.alibaba.com>
    [axboe: various cleanups/fixes, and name change to SIG_IS_DATA]
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    c73ebb68
io_uring.c 242.0 KB