• Paolo Valente's avatar
    block, bfq: improve responsiveness · 44e44a1b
    Paolo Valente authored
    This patch introduces a simple heuristic to load applications quickly,
    and to perform the I/O requested by interactive applications just as
    quickly. To this purpose, both a newly-created queue and a queue
    associated with an interactive application (we explain in a moment how
    BFQ decides whether the associated application is interactive),
    receive the following two special treatments:
    
    1) The weight of the queue is raised.
    
    2) The queue unconditionally enjoys device idling when it empties; in
    fact, if the requests of a queue are sync, then performing device
    idling for the queue is a necessary condition to guarantee that the
    queue receives a fraction of the throughput proportional to its weight
    (see [1] for details).
    
    For brevity, we call just weight-raising the combination of these
    two preferential treatments. For a newly-created queue,
    weight-raising starts immediately and lasts for a time interval that:
    1) depends on the device speed and type (rotational or
    non-rotational), and 2) is equal to the time needed to load (start up)
    a large-size application on that device, with cold caches and with no
    additional workload.
    
    Finally, as for guaranteeing a fast execution to interactive,
    I/O-related tasks (such as opening a file), consider that any
    interactive application blocks and waits for user input both after
    starting up and after executing some task. After a while, the user may
    trigger new operations, after which the application stops again, and
    so on. Accordingly, the low-latency heuristic weight-raises again a
    queue in case it becomes backlogged after being idle for a
    sufficiently long (configurable) time. The weight-raising then lasts
    for the same time as for a just-created queue.
    
    According to our experiments, the combination of this low-latency
    heuristic and of the improvements described in the previous patch
    allows BFQ to guarantee a high application responsiveness.
    
    [1] P. Valente, A. Avanzini, "Evolution of the BFQ Storage I/O
        Scheduler", Proceedings of the First Workshop on Mobile System
        Technologies (MST-2015), May 2015.
        http://algogroup.unimore.it/people/paolo/disk_sched/mst-2015.pdfSigned-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
    Signed-off-by: default avatarArianna Avanzini <avanzini.arianna@gmail.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    44e44a1b
bfq-iosched.txt 22.1 KB