io_uring: rearrange io_kiocb fields for better caching
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 27 Oct 2020 23:25:38 +0000 (23:25 +0000)
committerJens Axboe <axboe@kernel.dk>
Wed, 9 Dec 2020 19:03:59 +0000 (12:03 -0700)
We've got extra 8 bytes in the 2nd cacheline, put ->fixed_file_refs
there, so inline execution path mostly doesn't touch the 3rd cacheline
for fixed_file requests as well.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index a0a6d13..b651d6e 100644 (file)
@@ -713,14 +713,13 @@ struct io_kiocb {
        u64                             user_data;
 
        struct io_kiocb                 *link;
+       struct percpu_ref               *fixed_file_refs;
 
        /*
         * 1. used with ctx->iopoll_list with reads/writes
         * 2. to track reqs with ->files (see io_op_def::file_table)
         */
        struct list_head                inflight_entry;
-
-       struct percpu_ref               *fixed_file_refs;
        struct callback_head            task_work;
        /* for polled requests, i.e. IORING_OP_POLL_ADD and async armed poll */
        struct hlist_node               hash_node;