• Mauro Andreolini's avatar
    block, bfq: add Early Queue Merge (EQM) to BFQ-v7r8 for 3.4.0 · 5004120d
    Mauro Andreolini authored
    A set of processes may happen  to  perform interleaved reads, i.e.,requests
    whose union would give rise to a  sequential read  pattern.  There are two
    typical  cases: in the first  case,   processes  read  fixed-size chunks of
    data at a fixed distance from each other, while in the second case processes
    may read variable-size chunks at  variable distances. The latter case occurs
    for  example with  QEMU, which  splits the  I/O generated  by the  guest into
    multiple chunks,  and lets these chunks  be served by a  pool of cooperating
    processes,  iteratively  assigning  the  next  chunk of  I/O  to  the first
    available  process. CFQ  uses actual  queue merging  for the  first type of
    rocesses, whereas it  uses preemption to get a sequential  read pattern out
    of the read requests  performed by the second type of  processes. In the end
    it uses  two different  mechanisms to  achieve the  same goal: boosting the
    throughput with interleaved I/O.
    
    This pa...
    5004120d