diff options
author | Jens Axboe <axboe@kernel.dk> | 2017-12-20 21:14:42 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-12-20 21:16:33 +0100 |
commit | 0864fe09ab90ab32b7d21fe3cd72df5b5af8492e (patch) | |
tree | 0eccf5d3eb91f7eb9432e7c70b03dc33184b7b58 | |
parent | block: unalign call_single_data in struct request (diff) | |
download | linux-0864fe09ab90ab32b7d21fe3cd72df5b5af8492e.tar.xz linux-0864fe09ab90ab32b7d21fe3cd72df5b5af8492e.zip |
null_blk: unalign call_single_data
Commit 966a967116e6 randomly added alignment to this structure, but
it's actually detrimental to performance of null_blk. Test case:
Running on both the home and remote node shows a ~5% degradation
in performance.
While in there, move blk_status_t to the hole after the integer tag
in the nullb_cmd structure. After this patch, we shrink the size
from 192 to 152 bytes.
Fixes: 966a967116e69 ("smp: Avoid using two cache lines for struct call_single_data")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | drivers/block/null_blk.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c index ccb9975a97fa..ad0477ae820f 100644 --- a/drivers/block/null_blk.c +++ b/drivers/block/null_blk.c @@ -35,13 +35,13 @@ static inline u64 mb_per_tick(int mbps) struct nullb_cmd { struct list_head list; struct llist_node ll_list; - call_single_data_t csd; + struct __call_single_data csd; struct request *rq; struct bio *bio; unsigned int tag; + blk_status_t error; struct nullb_queue *nq; struct hrtimer timer; - blk_status_t error; }; struct nullb_queue { |