• Jens Axboe's avatar
    cfq-iosched: add close cooperator code · a36e71f9
    Jens Axboe authored
    If we have processes that are working in close proximity to each
    other on disk, we don't want to idle wait. Instead allow the close
    process to issue a request, getting better aggregate bandwidth.
    The anticipatory scheduler has similar checks, noop and deadline do
    not need it since they don't care about process <-> io mappings.
    
    The code for CFQ is a little more involved though, since we split
    request queues into per-process contexts.
    
    This fixes a performance problem with eg dump(8), since it uses
    several processes in some silly attempt to speed IO up. Even if
    dump(8) isn't really a valid case (it should be fixed by using
    CLONE_IO), there are other cases where we see close processes
    and where idling ends up hurting performance.
    
    Credit goes to Jeff Moyer <jmoyer@redhat.com> for writing the
    initial implementation.
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    a36e71f9
cfq-iosched.c 63.2 KB