• Paolo Valente's avatar
    block, bfq: reduce write overcharge · d5801088
    Paolo Valente authored
    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: default avatarPaolo Valente <paolo.valente@linaro.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    d5801088
bfq-iosched.c 188 KB