• Jens Axboe's avatar
    io_uring: cache req->apoll->events in req->cflags · 81459350
    Jens Axboe authored
    When we arm poll on behalf of a different type of request, like a network
    receive, then we allocate req->apoll as our poll entry. Running network
    workloads shows io_poll_check_events() as the most expensive part of
    io_uring, and it's all due to having to pull in req->apoll instead of
    just the request which we have hot already.
    
    Cache poll->events in req->cflags, which isn't used until the request
    completes anyway. This isn't strictly needed for regular poll, where
    req->poll.events is used and thus already hot, but for the sake of
    unification we do it all around.
    
    This saves 3-4% of overhead in certain request workloads.
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    81459350
io_uring.c 294 KB