• Paolo Valente's avatar
    block, bfq: unconditionally plug I/O in asymmetric scenarios · 530c4cbb
    Paolo Valente authored
    bfq detects the creation of multiple bfq_queues shortly after each
    other, namely a burst of queue creations in the terminology used in the
    code. If the burst is large, then no queue in the burst is granted
    - either I/O-dispatch plugging when the queue remains temporarily idle
      while in service;
    - or weight raising, because it causes even longer plugging.
    
    In fact, such a plugging tends to lower throughput, while these bursts
    are typically due to applications or services that spawn multiple
    processes, to reach a common goal as soon as possible. Examples are a
    "git grep" or the booting of a system.
    
    Unfortunately, disabling plugging may cause a loss of service guarantees
    in asymmetric scenarios, i.e., if queue weights are differentiated or if
    more than one group is active.
    
    This commit addresses this issue by no longer disabling I/O-dispatch
    plugging for queues in large bursts.
    Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    530c4cbb
bfq-iosched.c 194 KB