blk-iocost: account for IO size when testing latencies
authorTejun Heo <tj@kernel.org>
Mon, 13 Apr 2020 16:27:56 +0000 (12:27 -0400)
committerJens Axboe <axboe@kernel.dk>
Thu, 30 Apr 2020 21:54:45 +0000 (15:54 -0600)
commitcd006509b0a93cb7ee9d9fd50ae274098997a460
tree1d3ab04a30ff6ac0f133195d9612702e5d77a881
parent54c52e10dc9b939084a7e6e3d32ce8fd8dee7898
blk-iocost: account for IO size when testing latencies

On each IO completion, iocost decides whether the IO met or missed its latency
target. Currently, the targets are fixed numbers per IO type. While this can be
good enough for loose latency targets way higher than typical completion
latencies, the effect of IO size makes it difficult to tighten the latency
target - a target adequate for 4k IOs might be too tight for 512k IOs and
vice-versa.

iocost already has all the necessary information to account for different IO
sizes when testing whether the latency target is met as iocost can calculate the
size vtime cost of a given IO. This patch updates the completion path to
calculate the size vtime cost of the IO, deduct the nsec equivalent from the
observed latency and use the adjusted value to decide whether the target is met.

This makes latency targets independent from IO size and enables determining
adequate latency targets with fixed size fio runs.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Andy Newell <newella@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/Kconfig
block/blk-iocost.c