diff options
author | Jens Axboe <axboe@kernel.dk> | 2023-07-08 19:01:50 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2023-08-02 02:32:49 +0300 |
commit | 8c052fb3002e6e7eccdc138d2e459cd03f019ade (patch) | |
tree | 34b8f53a5c1db89e6dd17f762c969040c9cc0228 /Documentation/filesystems | |
parent | 099ada2c87260e5c52fbdad4ca40c165fc194a2e (diff) | |
download | linux-8c052fb3002e6e7eccdc138d2e459cd03f019ade.tar.xz |
iomap: support IOCB_DIO_CALLER_COMP
If IOCB_DIO_CALLER_COMP is set, utilize that to set kiocb->dio_complete
handler and data for that callback. Rather than punt the completion to a
workqueue, we pass back the handler and data to the issuer and will get
a callback from a safe task context.
Using the following fio job to randomly dio write 4k blocks at
queue depths of 1..16:
fio --name=dio-write --filename=/data1/file --time_based=1 \
--runtime=10 --bs=4096 --rw=randwrite --norandommap --buffered=0 \
--cpus_allowed=4 --ioengine=io_uring --iodepth=$depth
shows the following results before and after this patch:
Stock Patched Diff
=======================================
QD1 155K 162K + 4.5%
QD2 290K 313K + 7.9%
QD4 533K 597K +12.0%
QD8 604K 827K +36.9%
QD16 615K 845K +37.4%
which shows nice wins all around. If we factored in per-IOP efficiency,
the wins look even nicer. This becomes apparent as queue depth rises,
as the offloaded workqueue completions runs out of steam.
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'Documentation/filesystems')
0 files changed, 0 insertions, 0 deletions