OSDN Git Service

block, bfq: reduce write overcharge
authorPaolo Valente <paolo.valente@linaro.org>
Thu, 16 Aug 2018 16:51:17 +0000 (18:51 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 16 Aug 2018 19:08:13 +0000 (13:08 -0600)
commitd5801088a7bd210dd8fd7add04745e35f0f6ea72
treea91daecab3318589a0f19f84602fcbb5a779b642
parente02a0aa26bf61b6e481a3d7453a150e692b0df80
block, bfq: reduce write overcharge

When a sync request is dispatched, the queue that contains that
request, and all the ancestor entities of that queue, are charged with
the number of sectors of the request. In constrast, if the request is
async, then the queue and its ancestor entities are charged with the
number of sectors of the request, multiplied by an overcharge
factor. This throttles the bandwidth for async I/O, w.r.t. to sync
I/O, and it is done to counter the tendency of async writes to steal
I/O throughput to reads.

On the opposite end, the lower this parameter, the stabler I/O
control, in the following respect.  The lower this parameter is, the
less the bandwidth enjoyed by a group decreases
- when the group does writes, w.r.t. to when it does reads;
- when other groups do reads, w.r.t. to when they do writes.

The fixes "block, bfq: always update the budget of an entity when
needed" and "block, bfq: readd missing reset of parent-entity service"
improved I/O control in bfq to such an extent that it has been
possible to revise this overcharge factor downwards.  This commit
introduces the resulting, new value.

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