block, bfq: boost throughput with flash-based non-queueing devices
authorPaolo Valente <paolo.valente@linaro.org>
Fri, 4 Aug 2017 05:35:11 +0000 (07:35 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 11 Aug 2017 14:58:03 +0000 (08:58 -0600)
commitedaf94285bf98375d45cc95bbfd4b9d57796c864
tree1a3a79ccc855190bef281b3c12031ecf950ae485
parentd5be3fefc9e2db68eacfc7cfe265e2e860e4213f
block, bfq: boost throughput with flash-based non-queueing devices

When a queue associated with a process remains empty, there are cases
where throughput gets boosted if the device is idled to await the
arrival of a new I/O request for that queue. Currently, BFQ assumes
that one of these cases is when the device has no internal queueing
(regardless of the properties of the I/O being served). Unfortunately,
this condition has proved to be too general. So, this commit refines it
as "the device has no internal queueing and is rotational".

This refinement provides a significant throughput boost with random
I/O, on flash-based storage without internal queueing. For example, on
a HiKey board, throughput increases by up to 125%, growing, e.g., from
6.9MB/s to 15.6MB/s with two or three random readers in parallel.

Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bfq-iosched.c