• Paolo Valente's avatar
    block, bfq: modify the peak-rate estimator · ab0e43e9
    Paolo Valente authored
    Unless the maximum budget B_max that BFQ can assign to a queue is set
    explicitly by the user, BFQ automatically updates B_max. In
    particular, BFQ dynamically sets B_max to the number of sectors that
    can be read, at the current estimated peak rate, during the maximum
    time, T_max, allowed before a budget timeout occurs. In formulas, if
    we denote as R_est the estimated peak rate, then B_max = T_max ∗
    R_est. Hence, the higher R_est is with respect to the actual device
    peak rate, the higher the probability that processes incur budget
    timeouts unjustly is. Besides, a too high value of B_max unnecessarily
    increases the deviation from an ideal, smooth service.
    
    Unfortunately, it is not trivial to estimate the peak rate correctly:
    because of the presence of sw and hw queues between the scheduler and
    the device components that finally serve I/O requests, it is hard to
    say exactly when a given dispatched request is served inside the
    device, and for how long. As a consequence, it is hard to know
    precisely at what rate a given set of requests is actually served by
    the device.
    
    On the opposite end, the dispatch time of any request is trivially
    available, and, from this piece of information, the "dispatch rate"
    of requests can be immediately computed. So, the idea in the next
    function is to use what is known, namely request dispatch times
    (plus, when useful, request completion times), to estimate what is
    unknown, namely in-device request service rate.
    
    The main issue is that, because of the above facts, the rate at
    which a certain set of requests is dispatched over a certain time
    interval can vary greatly with respect to the rate at which the
    same requests are then served. But, since the size of any
    intermediate queue is limited, and the service scheme is lossless
    (no request is silently dropped), the following obvious convergence
    property holds: the number of requests dispatched MUST become
    closer and closer to the number of requests completed as the
    observation interval grows. This is the key property used in
    this new version of the peak-rate estimator.
    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>
    ab0e43e9
bfq-iosched.c 182 KB