• Paolo Valente's avatar
    block, bfq: preserve a low latency also with NCQ-capable drives · bcd56426
    Paolo Valente authored
    I/O schedulers typically allow NCQ-capable drives to prefetch I/O
    requests, as NCQ boosts the throughput exactly by prefetching and
    internally reordering requests.
    
    Unfortunately, as discussed in detail and shown experimentally in [1],
    this may cause fairness and latency guarantees to be violated. The
    main problem is that the internal scheduler of an NCQ-capable drive
    may postpone the service of some unlucky (prefetched) requests as long
    as it deems serving other requests more appropriate to boost the
    throughput.
    
    This patch addresses this issue by not disabling device idling for
    weight-raised queues, even if the device supports NCQ. This allows BFQ
    to start serving a new queue, and therefore allows the drive to
    prefetch new requests, only after the idling timeout expires. At that
    time, all the outstanding requests of the expired queue have been most
    certainly served.
    
    [1] P. Valente and M. Andreolini, "Improving Application
        Responsiveness with the BFQ Disk I/O Scheduler", Proceedings of
        the 5th Annual International Systems and Storage Conference
        (SYSTOR '12), June 2012.
        Slightly extended version:
        http://algogroup.unimore.it/people/paolo/disk_sched/bfq-v1-suite-
    							results.pdf
    Signed-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>
    bcd56426
bfq-iosched.c 218 KB