• Jens Axboe's avatar
    io_uring/net: add iovec recycling · 75191341
    Jens Axboe authored
    Right now the io_async_msghdr is recycled to avoid the overhead of
    allocating+freeing it for every request. But the iovec is not included,
    hence that will be allocated and freed for each transfer regardless.
    This commit enables recyling of the iovec between io_async_msghdr
    recycles. This avoids alloc+free for each one if an iovec is used, and
    on top of that, it extends the cache hot nature of msg to the iovec as
    well.
    
    Also enables KASAN for the iovec entries, so that reuse can be detected
    even while they are in the cache.
    
    The io_async_msghdr also shrinks from 376 -> 288 bytes, an 88 byte
    saving (or ~23% smaller), as the fast_iovec entry is dropped from 8
    entries to a single entry. There's no point keeping a big fast iovec
    entry, if iovecs aren't being allocated and freed continually.
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    75191341
net.c 37.9 KB